我正在构建一个 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/