我正在尝试编写一个后台脚本,如果找不到存储的项目,则会创建一个新选项卡,但它会打开数百个新选项卡。虽然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});
}
答案 0 :(得分:1)
Your first-run.html
(未在问题的任何位置列出)加载相同的脚本,导致它打开另一个副本(永远,或直到有问题的项目在$('.category a, .year a').on("click", function() {
var category = $('.category a').data('filter');
var year = $('.year a').data('filter');
$(this).addClass('active').siblings().removeClass('active');
featureLayer.setFilter(function(f) {
return ((category === 'all') ? true : f.properties[category] === true) &&
(year === 'all' || f.properties.Year === year);
});
return false;
});
中设置)
您只在后台脚本中获得一个localStorage
,因为代码实际上只在后台脚本中执行一次 - 并且在打开的console.log
的每个副本中执行一次。
关于在扩展部分之间重用脚本,这是一个警示故事。如果你想在各个部分之间使用一个公共库,请确保它不执行任何顶级代码(或者至少是双重检查兼容性),并且只定义要调用的函数。