Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome扩展chome.tabs.onUpdate运行两次?_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript chrome扩展chome.tabs.onUpdate运行两次?

Javascript chrome扩展chome.tabs.onUpdate运行两次?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试设置它,以便每次加载youtube视频页面时onUpdate都会运行一次。我想在youtube视频加载后等待加载。当我直接从url加载时,我得到了我期望的结果,但当我导航到建议的视频时,有两个加载/完成周期。一个用于当前视频,一个用于下一个视频 这是直接url youtube视频的输出 如果我在观看另一个youtube视频时导航到一个youtube视频,就会发生这种情况 在我的清单中,我有一个简单的background.js脚本、webNaviagtion权限和选项卡 我不知道为什

我正在尝试设置它,以便每次加载youtube视频页面时onUpdate都会运行一次。我想在youtube视频加载后等待加载。当我直接从url加载时,我得到了我期望的结果,但当我导航到建议的视频时,有两个加载/完成周期。一个用于当前视频,一个用于下一个视频

这是直接url youtube视频的输出

如果我在观看另一个youtube视频时导航到一个youtube视频,就会发生这种情况

在我的清单中,我有一个简单的background.js脚本、webNaviagtion权限和选项卡


我不知道为什么它跑了两次

选项卡。对于每个
/
iframe
,都会调用更新的
,Youtube观看页面会加载一个

向事件侦听器提供
frameId
,主页面具有
frameId==0


请注意,当用户从一个视频转到另一个视频或从Youtube主页面转到视频页面时,Youtube不会重新加载页面,因此要检测这些更改,您可以使用
chrome.webNavigation.onHistoryStateUpdated
事件侦听器或将侦听站点使用的DOM事件的内容脚本,也就是说。

谢谢你的回复。我刚刚尝试了HistoryStateUpdate,但仍有两次触发,两个日志的frameId都为0。这意味着历史状态被页面更新了两次。啊,好吧,我想我现在的问题是如何设置它,使它只在我将要访问的页面上运行。它针对当前youtube url运行,然后针对下一个url运行。您可以使用
chrome.tabs.get(details.tabId,…)
检查选项卡的当前url-如果两者相等,则为新页面url或使用其他方式。或。Youtube使用history.pushState API。chrome.tabs.onUpdate还不能处理它。看见
//In background.js
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
    console.log(info);
});