我在扩展程序清单中声明了2个后台页面,扩展名本身是持久的: “背景”: { “持久的”:是的, “scripts”:[“UrlMonitor.js”,“background.js”] }
在我的background.js中,我正在创建UrlMonitor的一个实例(在UrlMonitor.js中解析)
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扩展的新手。
答案 0 :(得分:0)
好的......我设法避免这种情况发生。 我一直在调试器下运行这个脚本,每次遇到断点,经过调试,我按F5(Visual Studio的旧习惯),这似乎触发了问题。也许运行时正在重新加载脚本并重新开始。
很抱歉这个问题,但是这一直困扰着我今天,所有我必须做的就是将鼠标悬停在chrome调试器上的continue图标上,以实现F5不是指定的快捷键! 有谁知道在chrome调试器中继续的快捷方式是什么?