Chrome расширение - почему некоторые URL, которые не соответствуют фильтрам, все еще проходят? - PullRequest
0 голосов
/ 25 марта 2020

Я создаю расширение chrome, которое автоматически закрывает вкладки при посещении указанных c URL-адресов, чтобы не отвлекаться.

Вот сайты, которые нужно закрыть: youtube facebook reddit twitter

Странно, некоторые URL, которые не соответствуют фильтрам, по-прежнему закрыты, как: 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' }
    ]
  });

Очень ценю вашу помощь!

1 Ответ

2 голосов
/ 25 марта 2020

API webNavigation также сообщает о iframes, поэтому вы должны проверить, если 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, как сообщалось ранее. когда вкладка только начинает загружаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...