Chrome扩展程序-为什么某些与过滤器不匹配的网址仍然可以通过?

问题描述 投票:0回答:1

我正在构建一个chrome扩展程序,该扩展程序在访问特定网址时会自动关闭标签页,以免分散注意力。

以下是要关闭的网站:youtube脸书reddit推特

很奇怪,某些与过滤器不匹配的网址仍处于关闭状态,例如: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' }
    ]
  });

非常感谢您的帮助!

javascript google-chrome url browser google-chrome-extension
1个回答
2
投票

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事件可能很有意义,因为该事件仅在该标签页开始加载时才报告。

© www.soinside.com 2019 - 2024. All rights reserved.