Chrome扩展程序 - 间隔持续时间未分配的变量值

时间:2015-10-05 02:44:26

标签: javascript google-chrome variables

标题总结了我遇到的奇怪问题。我声明一个全局变量,执行一个setInterval函数来修改该变量并在间隔的持续时间内取消,该变量看起来是否会被修改。

更清楚的是,这个简单的背景文件代码说明了这种情况:

var TabId=0;
var target= "https://google.com";

function start() {
    chrome.tabs.create({url: target}, function(tab) {TabId=tab.id;});
    setInterval(Repeat, 30*1000); //repeat every 30 seconds
}

function Repeat(){
  chrome.tabs.remove(TabId);
  chrome.tabs.create({url: target}, function(tab) {TabId=tab.id;});
}


chrome.browserAction.onClicked.addListener(start);

对于"短"我很惊讶如10秒的间隔,扩展工作正常,但30秒,例如,它失败。在指定的时间过后它什么都不做,如果你在控制台中检查TabId的值,它仍然是0.它看起来好像是代码行

TabId=tab.id;

从未执行过,这是不可能的,因为选项卡已经创建了,对吗?

但是还有更多的东西:如果你甚至在触发onClicked事件之前打开后台页面的控制台,它似乎按预期运行正常!

有人能帮我理解这里发生了什么吗? 起初我认为这可能与变量范围有关,但它没有意义,因为它的间隔时间更短,效果很好。

问候。

1 个答案:

答案 0 :(得分:0)

我的坏。

在我的清单文件中,我将“持久性”设置为 false 。通过此属性,您可以使用事件页面而不是背景页面。

  

事件页面仅在需要时加载。当事件页面没有主动执行某些操作时,它将被卸载,释放内存和其他系统资源。

因此,等待间隔完成一段时间后,TabId将被删除。 这让我发疯了,但是今天早上我醒来时提示解决方案。