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

Run content script loop only when tab is active

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

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

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

是否有更好的方法从内容脚本中查找选项卡是否处于活动状态?

看看Page Visibility API,我想检查一下

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

可以解决你的问题。

而且我不确定你在循环中做了什么,如果只是为了检测选项卡状态,你也可以改用 visibilitychange 事件侦听器。

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