jAutoPagerize
http://coderepos.org/share/changeset/2041
ごくごく簡単な XPath ジェネレータ/チェッカをくみこんでみました (Safari でのデバッグ用途が主目的)。siteinfo つくるなら基本的に http://labs.gmo.jp/blog/ku/2007/07/autopagerizexpath_autopagerize_ide.html をつかえばいいとおもうのでいらないと思います (さっきまで AutoPagerize IDE つかったことなかったw こりゃ便利ですね><)。
jAutoPagerize のアイコンをクリックするとテキストエリアがでます。Inspect ボタンをおすと要素選択して XPath を生成します。テキストエリア編集すると選択ノードにアウトラインがつきます。Safari でも動きます。jAutoPagerize のアイコンが表示されてないところでは javascript:XPathGenerator.open(); するとでてきます。
ノードから XPath つくるやつはちょー簡単に生成するのを前書いていたらしくて (test.user.js で getXPath... までうちこんだら autocompletepop された……) それをちょい改善してつかいました (ほとんどテストしてないからバグってるかも)。
getXPathByElement : function (target) {
var pathElement = "";
var node = target;
if (node.nodeType == 9 /*DOCUMENT_NODE=9*/) {
return ""
} else {
var tagName = node.tagName.toLowerCase();
if (node.hasAttribute("id")) {
// pathElement = tagName + '[@id="'+node.getAttribute("id")+'"]';
pathElement = 'id("'+node.getAttribute("id")+'")';
} else {
pathElement = arguments.callee(node.parentNode) + '/' + tagName;
if (node.hasAttribute("class")){
pathElement += '[@class="'+node.getAttribute("class")+'"]';
} else {
pathElement += '['+indexOf(node)+']';
}
}
}
return pathElement;
function indexOf (node) {
for (var i = 0, r = 1, c = node.parentNode.childNodes, len = c.length; i < len; i++) {
if (c[i].nodeName == node.nodeName &&
c[i].nodeType == node.nodeType) {
if (c[i] == node) return r;
r++;
}
}
return -1;
}
}