方法を知っていますか:FireFox 4ベータ版の「設定」と「インストール場所」

こんにちは、ハブラ。



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



All Articles