gpt4 book ai didi

javascript - chrome 扩展脚本在某些页面上加载了两次甚至更多

转载 作者:可可西里 更新时间:2023-11-01 02:20:01 27 4
gpt4 key购买 nike

这是我的 background.js 文件

 chrome.tabs.onUpdated.addListener(function(tabId,info, tab) {
var sites =new Array('site2','site1');
var url=tab.url;
var siteFlag=0;
for(var i in sites) {
var regexp = new RegExp('.*' + sites[i] + '.*','i');
if (regexp.test(url)) {siteFlag=1;}
};
if(siteFlag==1){
chrome.tabs.executeScript(tabId, {file:"contentscript.js"});
chrome.tabs.executeScript(tabId, {file:"jquery.js"});
chrome.tabs.insertCSS(tabId,{file:"box.css"});
}
});

在 contentscript.js 中,我只是运行一个弹出框。

$(document).ready(function () {
function popup() {...}
if (window.addEventListener)
{
window.addEventListener('load', popup(), false);
}
else if (window.attachEvent)
{
window.attachEvent('onload', popup());
}
});

有的页面只有一个弹出框,有的页面有两个甚至更多

问题是什么?

=============编辑==================

那些页面包含 Iframe

最佳答案

chrome.tabs.onUpdated.addListener 在选项卡状态更改时触发,这与 iframe 无关。您的脚本被多次注入(inject)同一帧,因为您为每次状态更改注入(inject)它,并且您只想在状态更改为“完成”时注入(inject)它。通过添加 if (changeInfo.status == "complete") { 修改您的代码:

chrome.tabs.onUpdated.addListener(function(tabId,info, tab) {
if (info.status == "complete") {
/* checking & injecting stuff */
}
});

关于javascript - chrome 扩展脚本在某些页面上加载了两次甚至更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148677/

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