[Firefox] firefox17とminibufferとldrizeとUserScriptLoaderとtombloo
Firefox17にアップデートした。
使ってるアドオンはだいたい動いた。
Easy DragToGo+は、拖拽 展:Easy DragToGo+ 1.1.7 BETA10(2012.7.23更新) Mozilla Firefox中文社区にある1.1.7にしたら動いた。
スクリプト関係でいくつか動かないのが出た。
minibufferとldrize
まず、e4xがobsoleteだかdeprecatedだかで使えないのでその部分を修正。
minibuffer.user.jsの819行目付近
GM_addStyle("#FLASH_MESSAGE{ \ position : fixed; \ (中略) } \ ");
こんな感じに。
うじゃうじゃっとしたカッコを取り去ってダブルクォートで囲って、"\"で行をつなげただけ
もう一ヶ所925行目付近のGM_addStyleも同じようにする。
あと、minibufferオブジェクトが他から見えない状態になってるようなので、unsafeWindowに付け替えてみた。
minibuffer.user.jsの1741行目付近の最後の"}"の直前
window.dispatchEvent(ev); unsafeWindow.dispatchEvent(ev); unsafeWindow.Minibuffer = window.Minibuffer; }
次にldrize.user.js
150行目辺りの"// !!! END OF SETTINGS !!!"の下くらいに、
window.Minibuffer = unsafeWindow.Minibuffer;
という行を追加。
これでとりあえず動いたけど、副作用やらなにやら、これでいいのかは不明。
しばらく試す。
追記
// ==UserScript== // @name delMinibuffer // @namespace http://hatena.jp/serian // @description delete Minibuffer obj from unsafeWindow // @include * // ==/UserScript== unsafeWindow.Minibuffer = null;
こんな感じのを、"ZZZZZ-delMinibuffer.user.js"とかいう名前で作っておく。
"ZZZZZ"は、一番最後に実行されるように。
すると、スクラッチパッドなんかでMinibufferを取得しようとしてもできないけど、LDRizeは動いてる感じ。
多少はセキュリティー的にいいのかも?
tomblooとUserScriptLoader
UserScriptLoaderの中でtomblooのオブジェクトを取得してサンドボックスに入れてuserscriptから使うということをしてた。
greasemonkeyや、scriptish用には、tombloo自身がやってくれてること。
sandbox.Tombloo = Cc['@brasil.to/tombloo-service;1'].getService().wrappedJSObject;
930行目くらいにこんなのを入れて、
GoogleReader + Tomblooみたいなスクリプトの中で
var tombloo = Tombloo.Tombloo.Service;
みたいにして、使っていた。
これが、Firefox17にしたら、動かなくなった。
Tombloo.Tomblooが未定義になる。
ためしにTombloo.Serviceだけで参照してみたら、なんかユーザー定義の属性の無いオブジェクトになってる?
なんかセキュリティー関連の変更が合ったんだろうか。
どうしたものか。
追記
コメントで教えてもらいました。
Tombloo.Service.__exposedProps__ = {check: "r", share: "r"};
TomblooService.patch.js
こんな感じのパッチを入れて、使えるようになりました。
参考 Nightlyで今すぐGoogle Reader Full Feed Modを動かす方法 - Firefox更新情報Wikiブログ