greasemonkey覚書

色々確認事項。チラシの裏な内容なので隠し。

greasemonkeyの関数

GM_log
GM_setValue
GM_getValue
GM_addStyle
GM_registerMenu
GM_xmlhttpRequest
GM_openInTab
他はGreasemonkey Manual:API - GreaseSpot Wikiを参照。

ユーザースクリプトでローカルファイルを読み書き

javascriptでローカルファイルを触るにはいくつか方法があるようだ。

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");」やら「Components.interfaces.nsILocalFile」あたりを検索するとコードも見つかりそう。
まぁ、W3Cに提出されたFile APIが実装されるのを待つのが最良でしょうが・・・

greasemonkeyjQueryを使う方法

Greasemonkey で 超お手軽に jQuery を使うスニペット – OTCHY.NET
http://blog.fulltext-search.biz/articles/2008/03/01/jquery-loader-for-greasemonkey
あたりを参考に。
対象になるサイトで$()が使われているので、スコープに注意。

javascriptメモリリークを防ぐ方法

書いているgreasemonkeyのコードが凄まじい勢いでメモリリークしているっぽいので対策を探してみる。
http://techbank.jp/Community/blogs/nora/archive/2009/09/01/13198.aspx
結局、循環参照が問題のようだけど・・・greasemonkeyはDOMオブジェクトをシステムスクリプトが参照して処理を行っているんじゃなかったっけ?
更に、対象となるサイト内のjavascriptのコードも循環参照している場所があるっぽい?
ただ、これはIEでの問題のような気もするのでFirefoxでは改善されているかも。


XPだとメモリリークの量が酷い(ページ更新の度に1M程度)のに対し、Vista(とWindouws7)だとほとんど気にならない程度なので、OS側のメモリ管理の方法が変わってるのかな?


Leak Monitorを使うとページ移動のたびにメモリリークの警告が・・・ しかも「リークが再利用されている」なんて警告まで出る始末。
「リークが発生しています」の警告の「ソースコードの概要」が[Window]って事はイベントハンドラに問題あるのかな?
試しにgreasemonkeyを無効にしてみたら・・・「リークが発生しています」「リークが再利用されている」がまだ出る!
もとのサイトがダメじゃん(泣) (jQueryがらみのリーク報告が出なくなったので、やっぱりgreasemonkey側のスクリプトにも問題はあるんですけどね・・・)


ちなみに、このページを表示させると凄まじいメモリリーク報告が(笑) blogpetはてなprototype.jsかなにかがぶつかってるのかな〜