javascript - Chrome 扩展 - 为什么一些与过滤器不匹配的网址仍然通过?

标签 javascript google-chrome url browser google-chrome-extension

我正在构建一个 Chrome 扩展程序,该扩展程序会在访问特定网址时自动关闭选项卡,以避免分心。

以下是要关闭的网站: YouTube Facebook 红迪特 推特

奇怪的是,一些与过滤器不匹配的网址仍然被关闭,例如: https://hackernoon.com/binance-vs-coinbase-pro-vs-cryptocom-which-one-is-the-one-for-you-ijcn3259

为什么?

代码在这里:

  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.onCommissed 事件可能是有意义的,因为之前在选项卡仅开始加载时报告了该事件。

关于javascript - Chrome 扩展 - 为什么一些与过滤器不匹配的网址仍然通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60847918/

相关文章:

javascript - 在 React 中渲染一个带有初始 scrollTop 值集的 div

javascript - 读取 API 的内容 (JSON)

javascript - AJAX日历更新页面rails 4

javascript - Chart.js 在 Android 上消失了

Java:从文件路径获取 URI

javascript - AngularJS Ui Router 正则表达式匹配 url 中的通配符

html - Chrome 中一个奇怪的渲染错误

javascript - 在 Google Chrome 扩展中添加 "options"菜单

url - 在 servlet 过滤器中排除特定 URL

java - URLConnection 编码问题与重音字符