chrome扩展chrome.webNavigation(事件)触发多次

时间:2019-06-20 13:59:46

标签: javascript google-chrome google-chrome-extension google-chrome-devtools

我正在构建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.jsAjaxURL的位置,并从JSON返回对象。服务器

我在此页面上看到Chrome Extension - 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");
});

0 个答案:

没有答案