расширение chrome chrome.webNavigation (Event) срабатывает несколько раз - PullRequest
0 голосов
/ 20 июня 2019

Я создаю расширение Chrome, мне нужно создать функцию для обнаружения изменений URL, например, youtube.com на youtube.com/watch?v={some video id}

Я продолжал искать способ сделать это на Content.js, но, видимо, это невозможно, и мне нужно использовать background.js в данном конкретном случае

Сначала я имплантировал эту часть

chrome.webNavigation.((EVENT)).addListener(function() {
   alert("worked");
});

, чтобы проверить, может ли chrome правильно обнаруживать изменения URL, тогда мне нужно будет подключить это к content.js к Ajax изменениям URL и вернуть объект JSON с сервера

Я видел на этой странице Расширение Chrome - webNavigation Несколько События , которые я могу использовать

События

  • onBeforeNavigate

  • onCommitted

  • onDOMContentLoaded

  • OnCompleted

  • onErrorOccurred

  • onCreatedNavigationTarget

  • onReferenceFragmentUpdated

  • onTabReplaced

  • onHistoryStateUpdated

к сожалению, ни один из них не работает должным образом, поскольку они Alert выскакивают несколько раз (иногда 1-4 раза), когда я посещаю (перезагружаюсь или посещаю одну страницу)

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

background.js

chrome.storage.sync.get( "extensionSwitch", function(data){
  if( data[ "extensionSwitch" ] == undefined ){
    chrome.storage.sync.set( { "extensionSwitch" : "true" }, function() {  } );
  }

});

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  fetch(request.input, request.init).then(function(response) {
    return response.text().then(function(text) {
      sendResponse([{
        body: text,
        status: response.status,
        statusText: response.statusText,
      }, null]);
    });
  }, function(error) {
    sendResponse([null, error]);
  });
  return true;
});

chrome.webNavigation.onHistoryStateUpdated.addListener(function() {
   alert("worked");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...