这是我的 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/