私はまだ addon-sdk にかなり慣れていないので、説明のつかない問題に遭遇しました。これまでのところ、jpm run を使用してすべてをテストしてきましたが、すべてうまく機能しています。今、私は達成したいことの完成に近づいているので、「通常の」ブラウザでテストを実行したいと思いました-主に数日間使用して、すべてが期待どおりに機能するかどうかを確認します.
ただし、インストール プロセスでは、次の 2 つのエラー メッセージが既にスローされます。
[例外...「コンポーネントがエラー コードを返しました: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]」 /< :: line 667" data: no] (unknown)
二回投げられる。
まあ、これまでのところ、とても良い(または悪い). 私のアドオンが追加したトグルボタンはまだ表示されています。ボタンをクリックすると、html ページを含むパネルが開きます - まだ機能しています。panel.html にはボタンが含まれており、これが私のトラブルの原因です。
クリックすると、ボタンはメインのアドオン ファイルにメッセージを送信します。
optionsButton.addEventListener("click", function(){
self.port.emit("options-clicked");
});
index.js がリッスンする対象:
panel.port.on("options-clicked", function () {
tabs.open("./privacyProtector/options.html");
panel.hide();
var optionsTab = tabs[tabs.length - 1];
var worker = optionsTab.attach({
contentScriptFile: "./privacyProtector/js/internalOptions.js",
});
/* send current settings to options */
worker.port.emit("initialize", createSettingsJSON());
});
options.html タブが開かれます (そしてパネルが消えます) が、contentScriptFile が添付されていないように見えます。コードが機能しなくなった場所を正確に把握しようとしましたが、できませんでした。後の「console.log()」
worker.port.emit("initialize", createSettingsJSON());
正常に動作しますが、「console.log()」で
self.port.on("initialize", function (message) {
initialize(message);
});
(internalOptions.js にあります) はコンソールに表示されません。
とにかく、ブラウザコンソールは次のように報告します:
コンテンツ プロセスでの nsIFile の使用は非推奨です。NetUtil.jsm:335:12
<利用不可> timers.js:43
これらはすべて「jpm run」で完全に機能しているため、どうすればよいかわかりません。したがって、ここで何が起こっているのかまったくわからないので、何か助けていただければ幸いです。
必要に応じて、さらにコードを投稿することもできますが、この投稿はそのままで十分長いと思いました。
ありがとう!
編集:コードをgithubにアップロードしました。多分これは私を助けやすくします。
https://github.com/Azlond/TrackingProtector
前述のコードは、data/privacyProtector/js/panel.js、index.js の 66 ~ 91 行目、および data/privacyProtector/js/internalOptions.js にあります。