Chrome 通过后台脚本打开多个选项卡,但只写入控制台一次
Chrome opens multiple tabs through background script but writes to console only once
我试图编写一个后台脚本,如果未找到存储的项目,它会创建一个新选项卡,但它会打开数百个新选项卡。 chrome 的创建标签功能通过后台页面打开多个标签,而 console.log
是 运行 一次。为什么会这样?
例如:
console.log('This runs once');
if (localStorage.hasItem == false){
chrome.tabs.create({'url':'this-keeps-on-running.html','selected':true});
}
else{
chrome.tabs.create({'url':'to-infinity.html','selected':true});
}
Your first-run.html
(未在问题中的任何地方列出)加载相同的脚本,导致它打开另一个副本(永远,或者直到在 localStorage
中设置有问题的项目)
您只能在后台脚本中得到一个 console.log
,因为代码确实在后台脚本中仅执行一次 - 并且在打开的每个 first-run.html
副本中执行一次。
让它成为关于在扩展部分之间重用脚本的警示故事。如果你想要部件之间的公共库,请确保它不执行任何顶级代码(或至少仔细检查兼容性)并且只定义要调用的函数。
我试图编写一个后台脚本,如果未找到存储的项目,它会创建一个新选项卡,但它会打开数百个新选项卡。 chrome 的创建标签功能通过后台页面打开多个标签,而 console.log
是 运行 一次。为什么会这样?
例如:
console.log('This runs once');
if (localStorage.hasItem == false){
chrome.tabs.create({'url':'this-keeps-on-running.html','selected':true});
}
else{
chrome.tabs.create({'url':'to-infinity.html','selected':true});
}
Your first-run.html
(未在问题中的任何地方列出)加载相同的脚本,导致它打开另一个副本(永远,或者直到在 localStorage
中设置有问题的项目)
您只能在后台脚本中得到一个 console.log
,因为代码确实在后台脚本中仅执行一次 - 并且在打开的每个 first-run.html
副本中执行一次。
让它成为关于在扩展部分之间重用脚本的警示故事。如果你想要部件之间的公共库,请确保它不执行任何顶级代码(或至少仔细检查兼容性)并且只定义要调用的函数。