【发布时间】:2021-01-03 03:41:33
【问题描述】:
我正在开发一个 Chrome 扩展程序,用于跟踪您使用计算机的时间。我使用一个间隔递增,并使用 chrome.idle.queryState 检查计算机是否被锁定,如果它被锁定,我不会更改我的计数器。
有没有办法手动卸载背景页面,而不是定期检查?或者后台脚本是否会自动卸载和重新加载,例如在计算机休眠 X 分钟后?由于我有一个间隔,我想知道脚本是否会自行卸载。我做了类似的事情:
setInterval(function () {
chrome.idle.queryState(15, function (state) {
if (state !== "locked") {
counter += 1;
console.log(counter);
}
}
}, 6000);
【问题讨论】:
-
您可以使用
window.close(),但这是一个不好的方法。正确的方法是重新编写代码以使用non-persistent background script。 -
请注意,您在此处使用 setInterval 的方式非常低效:它在扩展过程中以几乎 100% 的 CPU 负载不断运行代码。
-
为什么需要经常检查?有什么理由不能使用 chrome.idle.onStateChanged?
-
@wOxxOm 我将后台脚本设置为persistent等于false。我也忘了在最后添加一个 6,000,所以它每 6 秒运行一次(只是再次编辑它)。 100% CPU 负载是什么意思?拥有持久性与非持久性脚本有什么作用(在文档中它刚刚说对 webRequest api 使用非持久性)?
-
@NadiaCibrikova 我认为这可能有效,感谢您的建议!
标签: javascript google-chrome-extension background