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