Chrome通过后台脚本打开多个标签,但仅向控制台写入一次

时间:2015-06-01 14:33:45

标签: 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});
}
else{
    chrome.tabs.create({'url':'to-infinity.html','selected':true});
}

1 个答案:

答案 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的每个副本中执行一次。

关于在扩展部分之间重用脚本,这是一个警示故事。如果你想在各个部分之间使用一个公共库,请确保它不执行任何顶级代码(或者至少是双重检查兼容性),并且只定义要调用的函数。