Javascript Chrome扩展:页面监视被禁用

Javascript Chrome扩展:页面监视被禁用,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我最近构建了一个Chrome扩展来监控一些网页的变化。扩展每隔2秒左右定位XPath监视的对象,读取内容并比较它是否与以前的值不同,并向URL发送信号 它工作得很好,但是,如果我最小化Chrome,切换到另一个选项卡,或者将Chrome窗口放在后台(Z级),那么扩展似乎什么都不做,监视就会停止。当我再次激活Chrome窗口并使其可见时,监控再次开始工作 如何防止Chrome在后台或最小化时禁用扩展 通过以下方式实施监控: var id = setInterval(async () => {

我最近构建了一个Chrome扩展来监控一些网页的变化。扩展每隔2秒左右定位XPath监视的对象,读取内容并比较它是否与以前的值不同,并向URL发送信号

它工作得很好,但是,如果我最小化Chrome,切换到另一个选项卡,或者将Chrome窗口放在后台(Z级),那么扩展似乎什么都不做,监视就会停止。当我再次激活Chrome窗口并使其可见时,监控再次开始工作

如何防止Chrome在后台或最小化时禁用扩展

通过以下方式实施监控:

var id = setInterval(async () => {
  {
    var element = getElementByXpath(xpath);
    // some code
  }
}, 2000);

Chrome将非活动选项卡中的计时器限制为每分钟运行一次。您可以改为在后台脚本中调用setInterval,并向内容脚本发送一条消息,该脚本将执行getElementByXpath。@wOxxOm但在后台,扩展如何区分它当前监视的网页?扩展可能同时监视多个网页。内容脚本执行chrome.runtime.sendMessage,后台脚本通过chrome.runtime.onMessage侦听,该消息接收
发送者
,其中包含选项卡id。@wOxxOm有什么方法可以更好地说明您的建议吗?我正在尝试从后台读取文档,但无法读取。后台仅包含setInterval+chrome.tabs.sendMessage。无论如何,有一个更好的方法:
MutationObserver