Google chrome Chrome webNavigation.onComplete不工作?

Google chrome Chrome webNavigation.onComplete不工作?,google-chrome,google-chrome-extension,youtube,Google Chrome,Google Chrome Extension,Youtube,我正在尝试编写一个chrome扩展,当用户在youtube页面上观看视频时,它会执行一些代码。据我所知,我的代码是正确的,但它不起作用 eventPage.js: chrome.webNavigation.onCompleted.addListener(function(){ console.log("Test") },{url: [{pathContains: "watch", hostSuffix: "youtube.com"}]}); 还有我的清单文件 { "manifest_v

我正在尝试编写一个chrome扩展,当用户在youtube页面上观看视频时,它会执行一些代码。据我所知,我的代码是正确的,但它不起作用

eventPage.js:

chrome.webNavigation.onCompleted.addListener(function(){
  console.log("Test")
},{url: [{pathContains: "watch", hostSuffix: "youtube.com"}]});
还有我的清单文件

{
  "manifest_version": 2,

  "name": "youtubeExtension",
  "description": "A chrome extension for youtube",
  "version": "0.1",

  "permissions": ["https://www.youtube.com/", "webNavigation"],
  "background": {
    "scripts": ["eventPage.js"],
    "persistant": false
  }
}

似乎onCompleted在youtube上不起作用。

除了使用网络导航,您还可以使用

将此添加到background.js

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete') {
    if (tab.url.indexOf("youtube.com") != -1) {
      alert("Youtube load complete");
      injectScripts();
    }

  }
});
并将以下内容添加到mainfest.json

"permissions": ["https://www.youtube.com/", "webNavigation","tabs"]
这同样有效

只有在文档加载完成后才会触发。当您导航到YouTube上的另一个页面时,新页面不会以传统方式真正“加载”,而是动态更新页面,并使用
history.pushState
替换URL。要检测此类“导航”,请在
onCompleted
事件之外使用该事件


另一种检测YouTube页面上视频的方法是使用YouTube上的内容脚本和一些特定于YouTube的事件,请参见。

欢迎使用SO。您应该知道,堆栈片段实际上只适用于自包含的html/css/js。扩展是javascript,但它不能真正在代码段中运行,因此以这种方式发布它是没有意义的。如果你打开youtube作为背景选项卡,它也会启动。TS表示当前可见的选项卡。具体问题是什么?从一个视频导航到另一个视频时是否未触发事件?