运行 内容脚本仅在选项卡处于活动状态时循环
Run content script loop only when tab is active
我正在开发一个 chrome 扩展,它使用内容脚本来 运行 循环。循环中的任务 运行 会消耗相当多的内存,并且当有大量打开的选项卡时,它会影响浏览器性能。
我只在选项卡处于活动状态时才希望运行循环。
我正在使用 onMessage.addListener
我的背景页面,然后我可以 sendMessage
从内容脚本中检查 sender.tab.id
与 chrome.tabs.getSelected
。但由于 sendMessage 是异步的,我被迫使用 setInterval
进行 "is tab active" 检查以更新允许循环的变量是否为 运行。
是否有更好的方法从内容脚本中查找选项卡是否处于活动状态?
看看Page Visibility API,我想检查一下
if (document.visibilityState === "hidden")
可以解决你的问题。
而且我不确定你在循环中做了什么,如果只是为了检测选项卡状态,你也可以改用 visibilitychange 事件侦听器。
document.addEventListener("visibilitychange", function () {
if (document.hidden) {
//...
}
}, false);
我正在开发一个 chrome 扩展,它使用内容脚本来 运行 循环。循环中的任务 运行 会消耗相当多的内存,并且当有大量打开的选项卡时,它会影响浏览器性能。
我只在选项卡处于活动状态时才希望运行循环。
我正在使用 onMessage.addListener
我的背景页面,然后我可以 sendMessage
从内容脚本中检查 sender.tab.id
与 chrome.tabs.getSelected
。但由于 sendMessage 是异步的,我被迫使用 setInterval
进行 "is tab active" 检查以更新允许循环的变量是否为 运行。
是否有更好的方法从内容脚本中查找选项卡是否处于活动状态?
看看Page Visibility API,我想检查一下
if (document.visibilityState === "hidden")
可以解决你的问题。
而且我不确定你在循环中做了什么,如果只是为了检测选项卡状态,你也可以改用 visibilitychange 事件侦听器。
document.addEventListener("visibilitychange", function () {
if (document.hidden) {
//...
}
}, false);