読者です 読者をやめる 読者になる 読者になる

Google Chrome 2.0のUserScriptsはGreasemonkey互換のようで、そうではない

Chrome UserScripts

嵌る人がいそうなので、先に書いておきます。
User Scriptsを書いてみると GM_系のAPIが一通り定義されていて、一見Greasemonkeyと互換性がありそうに見えますが実はほとんど機能していません。

実装は http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/greasemonkey_api.js?view=log にあるんですが、例えば GM_[gs]etValueはlocalStorageを使っていて、(これはChrome 3.0 で実装される予定、つまり未実装なので)使うとエラーになります。
そのほかも、中身は throw new Error("not implemented."); となっていて、使うとエラーをぶん投げてきます(typeofとかでチェックしても使えるかわからないので正直迷惑。いちいちtry catchしろと言うのかね)。

まともに使えるのはGM_addStyleくらいで、GM_openInTab(window.openしてるだけ)、GM_log(console.logしてるだけ)と、あとは同一ドメインならGM_xmlhttpRequestが使えるくらいです。

というわけで、ChromeGreasemonkeyサポートはまだまだこれからです。(同様に、extension周りも動かすことはできるけど全然使えない状態です。)
公式では User Scripts を全くアピールしていないのはこういう事情だからだと思われます。もう少々お待ちください。

あ、でも以前User Scripts同士でwindowオブジェクトが共有されないと書いた件Google Chrome 2.0.170のGreasemonkeyとoAutoPagerizeについて - 0xFFはいつの間にか改善されていて助かった。