//In background.js
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
console.log(info);
});
我尝试将其设置为每次加载 YouTube 视频页面时 onUpdate 都会运行一次。我想在 YouTube 视频加载后等待加载。当我直接从 url 加载时,我得到了我所期望的结果,但是当我导航到建议的视频时,有 2 个加载/完整周期。一个用于当前视频,一个用于下一个视频。
这是直接 URL YouTube 视频的输出。
如果我在观看另一个 YouTube 视频时导航到一个 YouTube 视频,就会发生这种情况。
在我的 list 中,我有一个简单的 background.js 脚本、webNaviagtion 和选项卡的权限。
我不知道为什么它运行了两次。
最佳答案
tabs.onUpdated
为每个 frame
/iframe
调用,Youtube 观看页面加载一个。
webNavigation API
向事件监听器提供frameId
,主页有frameId == 0
。
请注意,当用户从一个视频转到另一个视频或从 Youtube 主页面转到视频页面时,Youtube 不会重新加载页面,因此要检测这些更改,您可以使用 chrome.webNavigation.onHistoryStateUpdated
事件监听器或将监听站点使用的 DOM 事件的内容脚本,即 "spfdone" .
关于javascript - chrome 扩展 chrome.tabs.onUpdated 运行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849140/