标签停用后,Chrome扩展程序代码不再运行?

时间:2019-04-03 14:59:35

标签: javascript google-chrome-extension

我创建了一个非常简单的Chrome扩展程序供个人使用,如果在打开了特定网站的标签页中更改了DOM元素并将其切换为活动标签页,则向我发送了浏览器通知。

如果该选项卡未处于活动状态且未打开(预期的/所希望的行为),它将起作用,但是除非该选项卡处于活动状态,否则最近通知将不再发送。我没有更改任何代码,因此不确定最近的Chrome更新是否更改了API的行为。

这是我的代码:

manifest.json

{
  "name": "New Element Notifier",
  "version": "1.0",
  "description": "Creates notification if new element exists.",
  "permissions": [
    "notifications"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "content_scripts": [
    {
      "matches": ["https://*.website.com/*"],
      "js": ["jquery.min.js", "website.js"],
      "run_at": "document_end"
    }
  ],
 "web_accessible_resources": [
    "*.wav"
  ],
  "manifest_version": 2
}

background.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.type == "new-element") {
    chrome.tabs.update(sender.tab.id, {active: true});

    var options = {
      type: "basic",
      title: "New Element",
      message: "A new element exists!",
      iconUrl: "icon.png"
    }

    chrome.notifications.create(options);

    sendResponse({confirm: "tab changed"});
  }
});

website.js

var elementContainer = document.querySelectorAll(".items-container")[0];

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
      chrome.runtime.sendMessage({type: 'new-element'}, function(response) {
        console.log(response.confirm);
      });
    }
  });
});

observer.observe(elementContainer, {characterData: true, childList: true, subtree: true});

由于长期运行良好,因此不确定发生了什么。任何帮助,将不胜感激!

0 个答案:

没有答案