Javascript Chrome通过后台脚本打开多个选项卡,但只向控制台写入一次

Javascript Chrome通过后台脚本打开多个选项卡,但只向控制台写入一次,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我试图编写一个后台脚本,如果找不到存储项,它将创建一个新选项卡,但它会打开数百个新选项卡。chrome的创建选项卡功能通过后台页面打开多个选项卡,console.log只运行一次。这到底是为什么 例如: console.log('This runs once'); if (localStorage.hasItem == false){ chrome.tabs.create({'url':'this-keeps-on-running.html','selected':true}); }

我试图编写一个后台脚本,如果找不到存储项,它将创建一个新选项卡,但它会打开数百个新选项卡。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});
}
(未在问题的任何位置列出)加载同一脚本,使其打开另一个副本(永久,或直到在
localStorage
中设置有问题的项)

后台脚本中只有一个
console.log
,因为该代码实际上在后台脚本中只执行一次,并且在打开的
first run.html
的每个副本中执行一次


让这成为一个关于在扩展部件之间重用脚本的警示故事。如果您希望部件之间有一个公共库,请确保它不执行任何顶级代码(或至少双重检查兼容性),只定义要调用的函数。

寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。又名“把我的魔法水晶球忘在家里了”你仍然没有显示“如果没有找到存储的物品”这一点。在我看来这是没有必要的。该问题询问了
console.log('foo')
vs chrome独占API的行为。我将尝试清除它。可能是因为它正在您创建的每个页面上运行?该脚本在清单中指定为背景脚本。这是脚本谢谢@Xan指出这一点。这是一个愚蠢的新手错误。但是很有趣:D