Googleのトップにリンク追加するGreasemonkeyスクリプト

前に書いてたのを久しぶりに修正した。var listのnameとurlにタイトルとurlを指定して使う。

// ==UserScript==
// @name           menu
// @namespace      f96q
// @include        http://www.google.co.jp/
// ==/UserScript==

var list = [
    {name: 'Backpack', url: 'http://'},
    {name: 'Basecamp', url: 'http://'},
    {name: 'Mail', url: 'http://'}
];

function $X(xpath, context) {
    context = context || document;
    var result = document.evaluate(xpath, context, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0, r = []; i < result.snapshotLength; i++)  {
	    r.push(result.snapshotItem(i));
    }
    return r;
}

var gb1 = $X('id("gbar")/nobr/a[contains(@class,"gb1") or contains(@class,"gb3")]');

list.forEach(function(i) {
    var a = document.createElement('a');
    a.setAttribute('class', 'gb1');
    a.href  = i.url;
    a.innerHTML = i.name;
    gb1[0].parentNode.insertBefore(a, gb1[gb1.length - 1]);
});