Greasemonkey版とSeahorse版のスクリプトを一本化してみた

GM_xmlhttpRequestを使用していないバージョンなら、どうにかして一本化できるのではないか?と気にはなってたが、ようやく本腰をいれたら以外に簡単にロジックが完成しました
もちろんリンクの差込位置をSeahorse版にあわせるのはレベルダウンなのでGreasemonkey版から位置の変更はなしです

var header = document.evaluate("//b[@class='sans']",
			document,
			null,
			XPathResult.FIRST_ORDERED_NODE_TYPE,
			null).singleNodeValue;

	〜 略 〜

parent.parentNode.insertBefore(spl_link, parent.nextSibling);
var header = document.getElementById("primaryUsedAndNew");

	〜 略 〜

header.parentNode.insertBefore(spl_link, header.previousSibling);

Greasemonkey版はdocument.evaluateを使用して書名のノードを特定出来るので書名の後にリンクを差し込めるが、Seahorse版は使用できない為に付近のid(primaryUsedAndNew)の前に差し込むしかない
どうにかclassを指定する方法がないかと、ググりhttp://getelementsby.com/Your Favourite getElementsByClassName - Snook.caを発見したので試してみる
とりあえず、クラス名がsansなのは1箇所しかないため、アッサリ記述できた

  • 新ロジック
header = getElementsByClassName(document.body,'sans')[0];

	〜 略 〜

function getElementsByClassName(node, classname)
{
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

スクリプトの個数が少ないほうが何かと楽なので、週末ぐらいから徐々に統合した1.4系をリリースする予定です(バージョンナンバーも見直します)