XPathのid(object)と//*[@id=object]の違いについて

http://tv2ch.com/jlab-10s/などユニークではないIDがあるページを参照しながら読むエントリー。

id(object)の場合

var ga = document.evaluate('id("sam_height")', document, null, 7, null);
console.log(ga.snapshotLength) //1

//*[@id=object]の場合

var gi = document.evaluate('//*[@id="sam_height"]', document, null, 7, null);
console.log(gi.snapshotLength) //20

結果

小難しいことはさておき、id(object)は一つだけ検出する。ハードコアな動作。
//*[@id=object]は素直に全て探してきてくれる。

AutoPagerizeのSITEINFOをWedataに登録したあとすべき事

SITEINFOの書き方のコツとかはいろんなサイトに書いてあるので、自分が気になったSITEINFOに関する事をメモするエントリー。

追記 これには正しい方法がありました。id:os0xさんよりコメントを頂いた。感謝。
windowの右下にある猿のアイコンを右クリックしてメニューを出し、ユーザースクリプトコマンドにAutoPagerize - clear cache というコマンドがあるので、これでキャッシュを削除できますよ。実行後は再起動などの必要はなく、ページを読み込めばOKです。

要点

Wedata登録後に必要なことは、過去のデータ(キャッシュ)をリセットする。

SITEINFO登録後にすべき事

ご存知の通り、SITEINFOの登録方法は2種類ある。

  1. autopagerize.user.jsに直接書き込む方法。
  2. Wedataに登録する方法。

通常SITEINFOに登録する場合、まず1でテストしてちゃんと動いたら2をする。
で、気になったところはWedataに登録した直後はAutoPagerizeが新しいデータを持っておらず、データをすぐに更新しないので正しく登録されたかどうかの確認ができない。
そこで登録後に過去のデータ(キャッシュ)をリセットすることが必要になる。また、AutoPagerizeをアンインストールする必要はない。アンインストールしてもデータは保持されているのでデータのみを手動で消す必要がある。

リセット手順

1. Firefoxのアドレスバーにabout:configを入力してエンター。
2. フィルタの部分にgreaseとか入力して以下のものを見つける。
greasemonkey.scriptvals.http://swdyh.yu.to//AutoPagerize.cacheInfo
greasemonkey.scriptvals.http://swdyh.yu.to//AutoPagerize.counter_data
3. それぞれリセットする。値が空欄になったことを確認。
4. Firefoxを再起動させる(必要)。
5. 対象のサイトにアクセスして正しく登録されているか確認する(一発目に読み込まないことがあるかも。リロードしたりWedataからのレスポンスを待つ)。

注意点

Wedataに正しく登録されたかを確認するときに、autopagerize.user.jsで直接書き込んだ箇所をコメントアウト、または削除しておくこと。