gpt4 book ai didi

javascript - 当我在 Firefox 扩展中使用 page-mod 添加内容脚本时。内容脚本函数执行三次

转载 作者:行者123 更新时间:2023-11-30 17:48:41 25 4
gpt4 key购买 nike

我无法理解。为什么我的函数在使用“page-mod”添加到 firefox 扩展后执行了三次。

这是我的代码:[ma​​in.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();

所以这个警报被称为三次。如何制止这种行为。

最佳答案

对于从 http://xyz.com/ 加载的每个 HTML 文档,您的内容脚本将只运行一次 - 您的内容脚本的一个单独实例将被注入(inject)他们每个人。因此,当此代码运行时看到三个警报可能意味着以下情况:

  • 打开了三个浏览器选项卡,其中加载了来自 http://xyz.com/ 的页面。
  • 只有一个浏览器选项卡,但是从 http://xyz.com/ 加载的页面包含两个框架,它们也是从 http://xyz.com/

很可能,如果您将 window.alert('testing phase 1') 更改为 window.alert(location.href),您的困惑就会消除。

关于javascript - 当我在 Firefox 扩展中使用 page-mod 添加内容脚本时。内容脚本函数执行三次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19569298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com