1

Chrome 拡張機能を Firefox に移植していて、できるだけ多くのコードを保持したいと考えています。私はSDKを使用していますが、JavaScriptは初めてなので、単なる間違いである場合はご容赦ください;)

content-scripts のいくつかの XMLHttpRequests を介して何かを取得する必要があります。

物事を行う「firefox-way」は、sdk-request-api を使用し、メイン スクリプトとコンテンツ スクリプトの間のメッセージを介して作業することです。これをアドオン全体に実装するには多くの作業が必要であるという事実に加えて、バイナリ データを取得する必要もありますが、これは不可能と思われます。

この回避策は、ここに記載されています。私はこれを避けたいと思います。なぜなら、これは現在ベータ版の機能であり、かなり「回避策」のように見えるとどこかで読んだと思うからです。

理想的には、このように実装したいと思います。今後の Firefox 24 では、コンテンツ スクリプトが特定のドメインにアクセスできるようになるはずです。そのため、現在 Firefox Aurora を使用しています。次のコードをpackage.jsonに追加しました。

"permissions": {
      "cross-domain-content": ["http://mozilla.org"]
 }

私のmain.jsは、ボタンがクリックされるとパネルを作成し、スクリプトをロードします。

var testPanel = require("sdk/panel").Panel({
                contentURL: data.url("pages/background.html"),
                contentScriptFile:   [data.url("util/jquery-1.8.2.min.js"), data.url("pages/xhrTest.js")]
            })
testPanel.show();

そして、これは私のxhrTest.jsです:

var xhr = new XMLHttpRequest();
xhr.open("GET","http://mozilla.org",true);
xhr.onerror = function () {
   console.log("Error");
};
xhr.onload = function () {
   console.log("loaded");
}

xhr.send();

デバッグ中、空の応答でステータス 2 から 4 にジャンプし、「onerror」を呼び出します。ステータスは 0 で、statustext は空で、何が問題なのかを示す他のインジケーターは表示されません。これがまだ同じオリジンポリシーでブロックされているのか、それとも何か間違ったことをしたのかわかりません。

私が得ることができるどんな助けにも本当に感謝します:)

前もってありがとう、
ファビ

4

1 に答える 1