0

さて、ここで、アドオンの一部に関する別の問題で再び戻ってきました.

オブザーバーを使用して、javascript を介して呼び出された値を変更しています。

var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.addObserver(this, "document-element-inserted", false);

これは、'document-element-inserted' を観察することで行っています。

ドキュメントのルート要素が作成された直後、スクリプトを実行する前に送信されます。(ソース

呼び出されると、アドオンはいくつかのドキュメント/ナビゲーター/スクリーンの値を変更して、navigator.X の値をオーバーライドすることでフィンガープリントを減らします。

Object.defineProperty(XPCNativeWrapper.unwrap(navigator), "plugins", {
    value: "",
});

この場合、たとえばプラグイン リストで、プラグインがまったくインストールされていないかのように表示されます。

これまでのところ、これは私の開発環境/jpm実行でうまく機能しています。しかし、実際の xpi を作成したので、何も起こりません。コードは引き続き呼び出されます。jSTracking 関数でいくつかのコンソール出力を使用しましたが、それらはすべてブラウザ コンソールに表示されました。ただし、変更されたと思われる値は元の値のままです。

jpm run を使用したときに表示されないエラーは 2 つだけです。

[例外...「コンポーネントがエラー コードを返しました: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]」 /< :: line 667" data: no] (unknown)

インストール中に2回スローされます。

コンテンツ プロセスでの nsIFile の使用は非推奨です。Content.js:25:17

コンテンツ プロセスでの nsIFile の使用は非推奨です。NetUtil.jsm:335:12

私のスクリプトとは関係ありませんが、時々現れるもう1つのものです。

私を最も混乱させているのは、なぜ Object.defineProperty は jpm run では機能するのに、xpi では機能しないのですか? 常に機能させるには、何を変更する必要がありますか?

プロジェクト全体は、私の Github リポジトリにあります。

オブザーバーの登録は、pp.js の 452 行目で行われます。

観察機能は436-446行にあります

jsTracking 関数は 193 行目で始まり、433 行目で終わります

引用されたプラグインの例は、399 ~ 403 行にあります。

どんな助けにも感謝します、ありがとう!

4

1 に答える 1

0

まあ、それは私が思っていたよりも「修正」するのが簡単でした.

e10s/firefox のマルチプロセッサ機能と、すべてのアドオンが互換性があるわけではないという言及を見たとき、私はランダムに Firefox のトピックを閲覧していました。

ナイトリー ビルドの代わりに標準の Firefox でアドオンを試したところ、すべてが期待どおりに機能しました。

したがって、私の質問には答えがあり、今は e10s の互換性について心配する必要があります。

bugzilla.mozilla.org でバグ レポートを調べて、簡単に修正できるものなのか、それとも彼らがドキュメントに追加できるものなのかを確認しようと思います。

于 2016-04-04T18:24:49.250 に答える