0
我正在使用以下代碼獲取使用Mozilla Addon SDK
開發的Firefox Addon
內的遠程文件的文件大小。從主腳本到內容的多條消息
main.js
// Import the page-mod API
var pageMod = require("sdk/page-mod");
// Import the self API
var self = require("sdk/self");
// Create a page mod
pageMod.PageMod({
include : "*.example.com",
contentScriptFile : [self.data.url("content.js"), self.data.url("jquery.min.js"), self.data.url("contentloaded.js")],
contentScriptWhen : "ready",
attachTo: ["top", "existing"],
onAttach : startListening,
contentScriptOptions : {
iconWait : self.data.url("wait.gif"),
iconFinished : self.data.url("done.png"),
}
});
function startListening(worker) {
worker.port.on("GetSize", function (data) {
// Handle the message
let getReq = require("sdk/request").Request({
url : data[0],
onComplete : function (response) {
reply = [response.headers["Content-Length"], data[1]];
//console.log("Send linkID : " + reply[1]);
worker.port.emit('receiveSize', reply);
}
}).head();
});
}
這完美的作品,但在DisplaySize
函數被調用多次相同請求。
content.js
function checkURL(url, linkID) {
data = [url, linkID];
self.port.emit("GetSize", data);
self.port.on("receiveSize", DisplaySize);
console.log("Inside checkURL For linkID : " + linkID); //<--This displays only once for each request
}
function DisplaySize(data) {
console.log("Inside DisplaySize For linkID : " + data[1]); //<--But this thrice
}
缺少什麼我在這裏?
這解決了它,但是如果我導航到其他頁面(通過Ajax),以前的消息偵聽器仍然活動,導致相同的行爲。如何解決這個問題? – Stacked 2015-02-14 11:17:00
nmaier對如何得到這個固定的任何建議? – Stacked 2015-02-25 04:05:01