「HTMLをクリックするとその部分のXPath文を取得できる」
(ex)/html/body/div[2]/p[3] などの文が取得したい
ということがしたいのですが、検索で探しても指定したXPath文からどうやってHTMLの要素を取得するかということばかりで、
XPath文自体の生成についてはなく、困っています。
FireFoxのextentionでxpatherというものがあるのですが、これに近いと思います。
https://addons.mozilla.org/ja/firefox/addon/xpather/
ブラウザは、Webkit系のchromeとsafariで動作すればIEなどは対象外でも構いません。
どうぞよろしくお願い致します。
取得というか、単にDOMを辿ってXPATHを再構築すればよいかと。
例示されたような形式(タグ名のみ表示、兄弟タグが無ければインデックスは省略、兄弟タグがあればインデックス付き)でしたら以下のような関数でどうでしょう。
function getXpath(element) { if(element && element.nodeType == document.ELEMENT_NODE) { var xpath = arguments.callee(element.parentNode) + '/' + element.tagName; var siblings = []; for(var i = 0; i < element.parentNode.childNodes.length; i++) { var e = element.parentNode.childNodes[i]; if(e.nodeType == document.ELEMENT_NODE && e.tagName == element.tagName) { siblings.push(e); } } if(1 < siblings.length) { for(var i = 0; i < siblings.length; i++) { if(siblings[i] === element) { xpath += '[' + (i+1) + ']'; break; } } } return xpath.toLowerCase(); } return ''; }