多次加载后台脚本

Background scripts loaded multiple times

本文关键字:脚本 后台 加载      更新时间:2023-09-26

我在扩展清单中声明了两个后台页面,扩展本身是持久的:"背景":{"持久":真的,"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扩展完全陌生。

好的。。。我设法避免了这种情况的发生。我一直在调试器下运行这个脚本,每次遇到断点,调试结束后,我都会按F5(Visual Studio的旧习惯),这似乎会触发问题。也许运行时正在重新加载脚本并重新开始。

很抱歉遇到这个问题,但今天这件事困扰了我一整天,我所要做的就是将鼠标悬停在chrome调试器上的继续图标上,意识到F5不是指定的快捷键!有人知道在chrome调试器中继续的快捷方式是什么吗?