JavaScript(greasemonkey)内でXPathを使う方法
Greasemonkeyで、自分用のカスタマイズmyconfig.user.jsというのを利用しているのだが、その中でXPathを利用出来ないかなと思っていたところ、使う方法がわかったので書いておく。
参考にしたのは下記のサイト
Introduction to using XPath in JavaScript - MDC
<div class="message">〜</div>
という要素にアクセスする場合は以下のように書く。
var div = document.evaluate('//div[@class="message"]', document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (i=0; i<div.snapshotLength; i++) { str = div.snapshotItem(i).innerHTML str = str.replace(/^(ttp:\/\/.*?)(<br>)/ig, "<a href=\"h$1\">$1</a>"); div.snapshotItem(i).innerHTML = str; }
これで、XPathが利用出来る。
document.evaluate('XPath', 起点となるノード, 名前空間, 返値のタイプ・型, 結果をどうするか);
- 起点となるノード:大体documentでいい。〜などが必要なければ、document.bodyなどにする。
- 名前空間:通常はnullで良さそう
- 返値の型:ループするなら型はORDERED_NODE_SNAPSHOT_TYPEが良さそう
- 結果をどうするか:nullにすると新しいXPathResultオブジェクトが生成される。既存のオブジェクトを使うならそれを指定。nullにしとけば良さそう。