ぐりもんメモ
こんなHTMLがページ中にあったとき,
<a href="javascript: hoge();">hagehage</a>
Greasemonkey側でこのhogeの処理をフックしたいとします。
unsafeWindow.hoge = function() { ... };
なんて書けばいいんですが,呼び出す関数がGM_xmlhttpRequestを呼び出している場合は,「Greasemonkey access violation: unsafeWindow cannot call GM_xmlhttpRequest.」なんてエラーが出る。
そんなときはこうすればOK。
function request() { ... GM_xmlhttpRequest(...); ... } unsafeWindow.hoge = function() { setTimeout(request, 10); };
こうすると,GM_xmlhttpRequestの呼び出し元にunsafeWindowの関数が含まれなくなるっぽい。setTimeoutの第1引数に指定した関数を呼び出すのは,windowって理解でいいのかな。ちょっと詳細は分かりませんが,とにかくこれでうまくいく,というお話。