xmlhttpRequestがユーザースクリプトから呼ばれているかどうかの検証方法としては、
callerを辿っていって一番上のがfubで実行したfunctionと同等かどうかチェックしているんですが、
下に書いた問題で、なんだか循環する場合があり、仕方なくちょっと妥協したロジックになっています。
callerを辿っていく途中でxmlhttpRequestが呼び出されたfunctionと比較し、Equalsであれば
循環してるので許可としていますが、この判定方法に問題があると思われるかたは
試用せず、また出来れば問題点をご指摘ください。
確かにGM_xmlhttpRequestのonloadじゃなくてもこうなる可能性はありそうなんですが。
あと、要望があったのでArray.prototypeを書き換えました。
具体的には最速インタフェース研究会のmala氏が書かれている「他のブラウザで使うためのコード」を
そのまま適用しています。(俺はここまで病的ではないので行末のセミコロンは付けた)
http://la.ma.la/blog/diary_200509122347.htm
http://www.geocities.co.jp/SiliconValley-Bay/6049/fub_net0922.zip
ついでにGreaseMonkey用のuser.jsを1つ移植したので貼っておきます。
全サイトはてブ化非公式版(http://junkfield.client.jp/)をfub用に書き換えたもの
hb_addict_fub.user.js
具体的な改造ポイントとしては
・document.contentTypeはIEには無いので使ってない。
・IEではsetAttributeでstyleを指定しても反映されない気がするので別の方法を使用。
xxx.style.color = "#ffffff"; とかでもいいんですが、ちょっと工夫してスタイルシートを足した。
・evaluateによるXPathは使えないが、そもそもそんな重要な使い方ではなかったのでbodyの最後にappendChildした。
あとは適当に俺好みにいじった程度です。
JSONで取ってくるようにしたほうがいいのかな?
とりあえず速度を比べたいとあったのでそのまま移植版です。