仅在选项卡处于活动状态时运行内容脚本循环

时间:2016-02-17 08:22:02

标签: javascript google-chrome google-chrome-extension tabs

我正在使用chrome扩展程序,它使用内容脚本来运行循环。在循环中运行的任务可能消耗相当多的内存,并且当有大量打开的选项卡时,它会影响浏览器的性能。

我希望仅在选项卡处于活动状态时运行循环。

我正在使用onMessage.addListener我的背景页面,然后我可以从内容脚本中sendMessage查看sender.tab.idchrome.tabs.getSelected。但是由于sendMessage是异步的,我被迫使用setInterval来激活" is tab"检查以更新允许循环运行的变量。

有没有更好的方法来查找内容脚本中的标签是否处于活动状态?

1 个答案:

答案 0 :(得分:4)

看看Page Visibility API,我想检查

if (document.visibilityState === "hidden")

可以解决您的问题。

我不确定你在循环中做了什么,如果只是为了检测制表符状态,你也可以使用visibilitychange事件监听器。

document.addEventListener("visibilitychange", function () {
  if (document.hidden) {
    //...
  }
}, false);