我无法理解。为什么我的函数在使用“page-mod”在firefox扩展中添加后执行三次。
这是我的代码: [ main.js
var pageModOptions = {
include: ["http://xyz.com/*"],
attachTo: ["top", "frame", "existing"],
contentScriptWhen: "end",
onAttach: function(worker){
worker.port.on("Done", function(elementContent) {
console.log("emitted by tarun :" + elementContent);
worker.port.emit("start", htmlfilePath);
});
},
};
pageModOptions.contentScriptFile = [data.url("js/main.js"),data.url("js/jquery-1.8.2.min.js"),data.url("js/hello.js")];
//pageModOptions.contentScriptFile = data.url("js/jquery-1.8.2.min.js");
pageModOptions.contentStyleFile = data.url("js/main.css");
pageModOptions.contentScriptOptions = csOptions;
pageMod.PageMod(pageModOptions);
和内容[ hello.js ]
function test(){
window.alert('testing phase 1');
}
test();
所以这个警报被称为三次。如何阻止这种行为。
答案 0 :(得分:2)
对于从http://xyz.com/
加载的每个HTML文档,您的内容脚本将只运行一次 - 您的内容脚本的单独实例将被注入其中。因此,在运行此代码时看到三个警报可能意味着以下事项:
http://xyz.com/
已加载的页面。http://xyz.com/
页面包含两个也从http://xyz.com/
加载的框架。最有可能的是,如果您将window.alert('testing phase 1')
更改为window.alert(location.href)
,您的混淆将被清除。