我正在使用chrome扩展程序,它使用内容脚本来运行循环。在循环中运行的任务可能消耗相当多的内存,并且当有大量打开的选项卡时,它会影响浏览器的性能。
我希望仅在选项卡处于活动状态时运行循环。
我正在使用onMessage.addListener
我的背景页面,然后我可以从内容脚本中sendMessage
查看sender.tab.id
对chrome.tabs.getSelected
。但是由于sendMessage是异步的,我被迫使用setInterval
来激活" is tab"检查以更新允许循环运行的变量。
有没有更好的方法来查找内容脚本中的标签是否处于活动状态?
答案 0 :(得分:4)
看看Page Visibility API,我想检查
if (document.visibilityState === "hidden")
可以解决您的问题。
我不确定你在循环中做了什么,如果只是为了检测制表符状态,你也可以使用visibilitychange事件监听器。
document.addEventListener("visibilitychange", function () {
if (document.hidden) {
//...
}
}, false);