方法を知っていますか: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

Source: https://habr.com/ru/post/J99951/


All Articles