chrome.webNavigation.onCompleted - 多次触发事件

ABE*_*ABE 6 javascript google-chrome-extension

我为 Inject code to page 加载 plagin,清单代码:

{
  "name": "any",
  "version": "1.0",
  "permissions": [
    "webNavigation",
    "*://*/*" 
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)

和 background.js:

chrome.webNavigation.onCompleted.addListener(function(details) {
    chrome.tabs.executeScript(details.tabId, {
        code: 'console.log("A")'
    });
});
Run Code Online (Sandbox Code Playgroud)

问题是页面加载后事件触发了几次,我只想要一次事件。我的错误是什么?我将不胜感激任何帮助。

小智 8

即使导航发生在子帧中,也会调用 chrome.webNavigation.onCompleted。仅捕获一次的一种方法是使用帧 id 条件实现代码。frame id = 0 对应于父框架。您的代码如下所示:

chrome.webNavigation.onCompleted.addListener(function(tab) {
    if(tab.frameId==0){
    //logic
    }
});
Run Code Online (Sandbox Code Playgroud)

此处提供详细文档:https : //developers.chrome.com/extensions/webNavigation