【发布时间】:2020-11-22 23:07:44
【问题描述】:
我自己的 Google Chrome 扩展程序在一段时间后停止工作,因为 setTimeout() 在某些情况下不起作用。
因此,在一些必要的延迟之后,后台脚本不会向内容脚本发送消息。
我通过编写许多 console.log() 语句发现了这个问题。
作为一种解决方案,我考虑使用 setInterval() 直到将消息发送到内容脚本:
var timer = setInterval(function() {
clearInterval(timer);
// Sending a message to the content script
}, 3000);
我在 setInterval() 之前、期间和之后的代码都很安静,所以我希望这段代码 sn-p 足够了。
有谁知道这些超时或间隔在哪些情况下不开始?
或者我可以使用任何类似的选项吗?
我曾考虑过使用 Chrome 警报 API,但警报每分钟只能使用一次,如果我没记错的话,最小延迟是一分钟。
【问题讨论】:
-
setInterval 的用法很奇怪。无论如何,也许“停止工作”与其他代码有关?
-
如果您使用
"persistent":false声明后台脚本,这是正确且预期的行为:后台脚本将在不活动时卸载而忽略任何计时器。见Persistent background page on demand or an event page that doesn't unload?
标签: javascript google-chrome-extension