Javascript 如果完成chrome扩展内容脚本的时间过长,是否会停止该脚本?

Javascript 如果完成chrome扩展内容脚本的时间过长,是否会停止该脚本?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我在每个页面上都有一个内容脚本。它会更新页面的html,这似乎会在较长的页面上花费更多的时间—脚本会多次遍历DOM。在较长的页面上,脚本可能需要10-20秒才能完成,而且当它花费太长的时间时,chrome似乎会停止脚本,因为在这些页面上,我只看到页面的一部分发生了更改 奇怪的是,当我在代码的某个地方添加几个警报,将运行时划分为几个部分时,脚本运行得非常好,并更改了整个页面。但是,当删除警报时,脚本会再次提前停止,并且只更改页面的一部分 我唯一的结论是chrome会停止运行太长的脚本,所以我的问题

我在每个页面上都有一个内容脚本。它会更新页面的html,这似乎会在较长的页面上花费更多的时间—脚本会多次遍历DOM。在较长的页面上,脚本可能需要10-20秒才能完成,而且当它花费太长的时间时,chrome似乎会停止脚本,因为在这些页面上,我只看到页面的一部分发生了更改

奇怪的是,当我在代码的某个地方添加几个警报,将运行时划分为几个部分时,脚本运行得非常好,并更改了整个页面。但是,当删除警报时,脚本会再次提前停止,并且只更改页面的一部分

我唯一的结论是chrome会停止运行太长的脚本,所以我的问题是——这是真的吗?如果是的话,我们能做些什么呢?除了使用恼人的弹出警报之外

我有另一个理论,脚本停止是因为当同时命令试图更改DOM时,不知何故存在冲突。这更有意义吗


有关架构的更多详细信息:后台页面从内容脚本获取消息。此消息包含一个回调函数,即实际更改HTML的函数。然后,根据页面的长度,从后台页面多次调用此函数。如果在回调函数中插入警报,则每次调用都会顺利运行。但是,如果我将其删除,则只会从后台页面进行第一次调用,并且尽管后台页面代码一直在运行,但后续调用不会执行任何操作。

是,通常,它会提示用户是否要继续等待或终止页面。

如果JavaScript需要很长时间,Chrome会设置一些限制,因此会阻塞主线程,并通知您花费的时间太长

您有两个选择:

您能否将一些处理工作转移给HTML5工作者,并在处理完成后将消息发回页面? 您能否将一些处理卸载到后台页面,并在处理完成后将消息请求发送回内容脚本?
我发现了问题所在。我正在使用从内容脚本到后台html页面的消息所给出的回调。此回调只能运行一次,因为发送到后台页面的每条消息只允许一个响应

当我在回调函数中添加了一个警报时,chrome中的某种错误导致了许多响应


通过将消息内容分解为多条消息,问题得以解决。

是的,我知道这些提示,但它们不显示。它似乎在没有通知的情况下就杀死了它。知道为什么/如何防止它发生吗?顺便说一句,它会杀死脚本而不是整个页面。我不能将处理移到后台页面,因为这意味着来回发送页面的整个html。。。我添加了更多的细节,也许我不知何故误用了回调。。。