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

时间:2015-11-21 22:07:14

标签: javascript google-chrome google-chrome-extension

//In background.js
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
    console.log(info);
});

我尝试对其进行设置,以便每次加载YouTube视频页面时,onUpdate都会运行一次。我想在youtube视频加载后等待加载。当我直接从网址加载时,我得到了我的期望,但是当我导航到建议的视频时,有2个加载/完成周期。一个用于当前视频,一个用于下一个视频。

Direct Url

这是直接网址YouTube视频的输出。

Navigating

如果我在观看其他YouTube视频时导航到YouTube视频,就会发生这种情况。

在我的清单中,我有一个简单的background.js脚本,webNaviagtion和Tabs的权限。

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

1 个答案:

答案 0 :(得分:2)

每个tabs.onUpdated / frame都会调用

iframe,Youtube观看页面会加载一个。

webNavigation API向事件监听器提供frameId,主页面为frameId == 0

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