这是我的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(使用前将#替换为@)