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

2024-06-26

这是我的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 无关。您的脚本被多次注入到同一帧,因为您为每个状态更改注入它,并且您只想在状态更改为“完成”时注入它。通过添加修改您的代码if (changeInfo.status == "complete") {:

chrome.tabs.onUpdated.addListener(function(tabId,info, tab) {
   if (info.status == "complete") {
      /* checking & injecting stuff */
   }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

chrome 扩展脚本在某些页面上加载两次甚至更多 的相关文章

随机推荐