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

Mar*_*ark 5 javascript tabs google-chrome google-chrome-extension

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

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

我使用onMessage.addListener我的背景页面,那么我就可以sendMessage从内容脚本,并检查sender.tab.idchrome.tabs.getSelected。但由于 sendMessage 是异步的,我被迫使用setInterval“是否处于活动状态”检查来更新允许循环运行与否的变量。

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

Hai*_* Ai 7

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

if (document.visibilityState === "hidden")
Run Code Online (Sandbox Code Playgroud)

可以解决你的问题。

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

document.addEventListener("visibilitychange", function () {
  if (document.hidden) {
    //...
  }
}, false);
Run Code Online (Sandbox Code Playgroud)