Javascript Chrome扩展-为什么有些URL不';不匹配的过滤器仍然通过?

Javascript Chrome扩展-为什么有些URL不';不匹配的过滤器仍然通过?,javascript,google-chrome,url,browser,google-chrome-extension,Javascript,Google Chrome,Url,Browser,Google Chrome Extension,我正在构建一个chrome扩展,在访问特定URL时自动关闭选项卡,以避免分心 以下是将关闭的网站: youtube 脸谱网 雷迪特 推特 奇怪的是,一些与过滤器不匹配的URL仍然关闭,如: 为什么? 代码如下: chrome.webNavigation.onDOMContentLoaded.addListener(function(data) { chrome.tabs.remove(data.tabId); }, {url: [ { hostContains

我正在构建一个chrome扩展,在访问特定URL时自动关闭选项卡,以避免分心

以下是将关闭的网站: youtube 脸谱网 雷迪特 推特

奇怪的是,一些与过滤器不匹配的URL仍然关闭,如:

为什么?

代码如下:

  chrome.webNavigation.onDOMContentLoaded.addListener(function(data) {
        chrome.tabs.remove(data.tabId);

  }, {url: [
    { hostContains: '.youtube' },
    { hostContains: '.twitter' },
    { hostContains: '.reddit' },
    { hostContains: '.facebook' }
    ]
  });

非常感谢你的帮助

webNavigation API还报告iFrame,因此您应该检查
frameId
是否为
0

chrome.webNavigation.onDOMContentLoaded.addListener(data => {
  if (!data.frameId) {
    chrome.tabs.remove(data.tabId);
  }
}, {
  url: [
    { hostContains: '.youtube' },
    { hostContains: '.twitter' },
    { hostContains: '.reddit' },
    { hostContains: '.facebook' },
  ],
});

顺便说一句,使用chrome.webNavigation.onCommitted事件可能是有意义的,因为它是在选项卡仅开始加载时报告的。

webNavigation API还报告iFrame,因此您应该检查
frameId
是否为
0

chrome.webNavigation.onDOMContentLoaded.addListener(data => {
  if (!data.frameId) {
    chrome.tabs.remove(data.tabId);
  }
}, {
  url: [
    { hostContains: '.youtube' },
    { hostContains: '.twitter' },
    { hostContains: '.reddit' },
    { hostContains: '.facebook' },
  ],
});

顺便说一句,使用chrome.webNavigation.onCommitted事件可能是有意义的,因为之前在选项卡仅开始加载时报告了该事件。

我不知道,太棒了!感谢您的工作解决方案和提示:)完美答案!我不知道,太棒了!感谢您的工作解决方案和提示:)完美答案!