XMLHttpRequest を使用して、サーバーと開発中の Firefox 拡張機能の間でデータを交換しています。残念ながら、これらのリクエストは現在開いているページに何らかの形で関連しているようです。現在のタブを閉じているときにリクエストを発行しようとすると、エラーで失敗します。タブで何が起こっているかに関係なく、拡張機能自体からリクエストを発信するにはどうすればよいですか?
編集: この問題を再現するコードは次のとおりです。これはメインの拡張本体として実行されます ( http://kb.mozillazine.org/Getting_started_with_extension_developmentの「Hello world」チュートリアルに基づいて設計したため、アドオン SDK はありません)。これは、上記のチュートリアルの「overlay.js」のコードと同じ場所で実行されることを意味します。
function createXMLHttpRequest() {
return Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
.createInstance(Components.interfaces.nsIXMLHttpRequest);
}
function issueRequest() {
var req = createXMLHttpRequest();
req.open("GET", "http://google.com", true);
req.addEventListener("load", function(event) {
alert("SUCCES");
});
req.addEventListener("error", function(event) {
alert("ERROR");
});
req.send();
};
window.addEventListener("DOMContentLoaded", function(event) {
issueRequest();
var doc = event.originalTarget;
var win = doc.defaultView;
win.addEventListener("unload", function(event) {
issueRequest();
});
});
これにより、新しいタブを開いた後は「成功」、閉じた後は「エラー」になります。私は2つの成功を望んでいます。