我在扩展声明清单2背景页和扩展本身是持久: “背景”:{ “老大难”:真实, “脚本”:“UrlMonitor.js” “background.js”] }背景脚本加载多次
在我background.js,我创建了UrlMonitor的一个实例(UrlMonitor.js declated)
var monitor = new UrlMonitor();
在UrlMonitor.js,我有几个全球由事件回调访问的变量。
var nativePort = null;
var TabInfoKP = new Object();
var TabInfoKPN = new Object();
我已经注意到,调用脚本加载多次,多次调用
var monitor = new UrlMonitor();
和
var nativePort = null;
var TabInfoKP = new Object();
var TabInfoKPN = new Object();
我期待的脚本加载一次,并保持在后台,只响应事件回调。我正在使用全局TabInfoKP来跟踪选项卡状态(通过在事件回调中更新它们)。通过多重初始化,我将以前存储的信息放在变量中。即使在创建/更新新选项卡等情况下也会发生负载。
我做错了什么或者这是预期的功能吗? 如果这是预期的功能,我的替代选择是什么?
P.S,我对JS和chrome扩展完全陌生。
不可能说没有更多的代码。但是,不,后台脚本应该只执行一次,如果它是持久的。 – Xan 2014-09-11 11:19:07
缺少的唯一代码是回调。我有tabs.OnCreated和tabs.OnUpdated的回调,他们所做的就是将tabId和被访问的url添加到全局TabInfoKP变量中。 – Sri 2014-09-11 12:38:18