ここで、私のアドオンの一部に関するもう1つの問題が再びあります。Object.defineProperty()はテスト(jpm run)中に動作しますが、実際のxpiを使用しているときは何もしません。
私はオブザーバを使用して、JavaScriptから呼び出された値を変更しています。
var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.addObserver(this, "document-element-inserted", false);
私は「文書要素挿入」、文書のルート要素が作成された直後に送信され
で観察することによってこれを行うが、それに任意のスクリプトを実行する前にしています。この場合
Object.defineProperty(XPCNativeWrapper.unwrap(navigator), "plugins", { value: "", });
例えばプラグインリスト、(Source)
呼び出された場合、私のアドオンはnavigator.X値を上書きすることによってフィンガープリントを低減するために、いくつかの文書/ナビゲーター/スクリーン値を変更あたかもプラグインがインストールされていないかのように表示されます。
これまでのところ、これは開発環境/ jpmが正常に動作しています。しかし、実際のxpiを作成したので、何も起こりません。コードはまだ呼び出され、私はjSTracking関数でいくつかのコンソール出力を使用し、それらはすべてブラウザコンソールに表示されました。ただし、変更された値は依然として元の値です。
JPMの実行使用している場合は表示されませんだけで2つのエラーがあります。
[例外... "コンポーネントは障害コードを返しました:0x80004005の(NS_ERROR_FAILURE)[nsIURI.hostPort]" nsresult:「0x80004005の(NS_ERROR_FAILURE)」場所: "JSフレーム::リソース://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/< ::ライン667" のデータ:なし](不明)
は、インストール中に2回投げます。
コンテンツプロセスでnsIFileを使用することは推奨されていません。 Content.js:25:17
コンテンツプロセスでのnsIFileの使用は推奨されていません。 NetUtil.jsm:335:12
私のスクリプトとは決して関連しないものの、他のものは時々出現しますか?
私を最も混乱させるもの:なぜObject.definePropertyはjpmで動作しますが、xpiでは動作しませんか?常に機能するように変更する必要がありますか?
プロジェクト全体は、観察者の登録がPPであるmy Github repository.
で見つけることができます。ライン452でのJS、
観察機能は、ライン
436から446とjsTracking機能がライン193で開始しており、行に見出すことができるライン433
引用プラグイン例で終了します399-403
ご協力いただき、ありがとうございます。ありがとうございます!
あなたがオブザーバーでコンテンツ文書にアクセスしている場合は、アドオンがe10sと互換性がなくfirefoxではないという問題があります。 – the8472
あなたは正しいのですが、アドオンで修正する必要があります。私が実際に言いたかったのは、これ以上のものでした。 'bugzilla.mozilla.orgでバグ報告を探して、今修正できるかどうか、彼らが最後に行うことができるかどうか/ addドキュメントに。 のように、おそらくオブザーバーページで[https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Observers_in_the_chrome_process]という短いメモを付けてください。コメントを編集してより明確にします。 – Sintho