XMLHttpRequest를 사용하여 서버와 Firefox 확장 프로그램간에 데이터를 교환하고 있습니다. 불행히도 이러한 요청은 현재 열려있는 페이지와 연결되어있는 것처럼 보입니다. 현재 탭이 닫힌 상태에서 요청을하면 오류가 발생하여 실패합니다. 탭에서 진행되는 작업과 상관없이 확장 프로그램 자체에서 내 요청을 보내려면 어떻게해야합니까?Firefox 확장 프로그램의 XMLHttpRequest
편집 : 다음은이 문제를 재현하는 코드입니다. 그것은 주요 확장 본문 (나는 "Hello world"튜토리얼 http://kb.mozillazine.org/Getting_started_with_extension_development에서 내 디자인을 기반으로하므로 추가 기능 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();
});
});
이 닫을 후 새로운 탭이 개방 된 후, "SUCCESS"및 "ERROR"을 초래한다. 나는 두 가지 성공을 원합니다.
어떻게하면 XMLHttpRequest를 생성합니까? Add-on SDK를 사용하고 콘텐츠 스크립트에서 사용하는 것 같습니다. –
@WladimirPalant 문제를 보여주는 테스트 사례가 줄어 들었습니다. Add-on SDK를 사용하지 않고이 코드는 언급 된 튜토리얼에 대한 이해가 컨텐츠 스크립트로 실행됩니다. –
코드에서'win.location.href'의 값을 확인하십시오 - 저는 그것이 브라우저 페이지이고 내용 페이지가 아니라는 것을 확신합니다. 따라서 탭이 아니라 브라우저 창이 닫힐 때까지 기다리는 중입니다. –