こんにちは、ハブラ。
FireFoxのアドオンの開発者として、私は有名な著者の最近の記事
「Firefox 4とのアドオンの互換性...」に基づいて考えを書くことにしました。
私の考えでは、ヘッダーにあるもの、つまりPreferencesオブジェクトと、「Install Location」へのパスを取得する方法に興味がありました。
猫の下にコードとその説明。
ご想像のとおり、その記事の大部分はすでに書かれていますが、もちろん
これに注意を払うことは特に価値がありまし
た 。
それにもかかわらず、すべてがすぐに明確で理解できるわけではないので、私のサプリメントを改訂した後、私はあなたに、誰かが興味を持ったらどうするかを伝えることにしましたか?
私のアドオンは、Preferencesとファイルシステム、具体的にはそれ自体が存在するフォルダとアクティブに連携し、書籍のライブラリがそこに保存されます。 したがって、数週間前に第4バージョンでは何も機能しないことを知ったとき、私は余暇にそれをすることにしました。 今日は余暇があり、これが私に明らかにしたことです。
使用する略語については、すぐに予約してください。
var CI = Components.interfaces;<br>
var CC = Components.classes;<br>
var pref = " preferences " // "extensions.kbtrainerff." <br>
var ext_id = "id " // "kbtrainerff@gmail.com"
さあ、始めましょう。
プリファレンス:
それは:preferences_object = CC[ "@mozilla.org/preferences-service;1" ].getService(CI.nsIPrefService).getBranch(pref);
次のようになりました:var CU = Components.utils<br>CU.import( "resource://gre/modules/Services.jsm" );<br>preferences_object = Services.prefs.getBranch(pref);
アドオンフォルダーへのパスの決定:
同じ[アドオン| 拡張| 「アプリケーション」]。
それは:preferences_object = CC[ "@mozilla.org/extensions/manager;1" ].getService(CI.nsIExtensionManager).getInstallLocation(ext_id);
次のようになりました:それは問題でしたが、判明したように、オブジェクトモデルと「document.location = about:config」をざっと調べると、完全に解決可能です。
物議を醸す決定、しかし利用可能:
var CU = Components.utils<br>CU.import( "resource://gre/modules/Services.jsm" );<br> var ic = Services.prefs.getBranch( "extensions." );<br> var ics = eval(ic.getCharPref( "installCache" ));<br><br> for ( var i = 0; i < ics.length; i++){<br> var obj = ics[i];<br> if (obj.name == "app-profile" ){<br> if (obj[ "addons" ] != undefined){<br> if (obj[ "addons" ][ext_id] != undefined){<br> if (obj[ "addons" ][ext_id][ "descriptor" ] != undefined){<br> extdir = obj[ "addons" ][ext_id][ "descriptor" ];<br> break ;<br> }<br> }<br> }<br> }<br>}<br><br>alert(extdir);
ファイルにします。
var theFile = CC[@mozilla.org/file/local;1"].createInstance(CI.nsILocalFile);<br>Install_Location = theFile.initWithPath(extdir);
それだけです:)
お楽しみください!
*このソースコードは、 ソースコードハイライターで強調表示されました。UPD: FireFoxの新しいkbTrainer 0.1.2