Rya*_*yan 14 javascript google-chrome google-chrome-extension
我的(测试)Chrome扩展程序中有一个非常简单的代码:
function test()
{
alert("In test!");
}
chrome.tabs.onUpdated.addListener(function(tabid, changeinfo, tab) {
var url = tab.url;
if (url !== undefined) {
test();
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么要开test()两次?更重要的是,我如何才能一次点火?
Nik*_*las 33
查看事件发送时的不同状态.我认为,当状态为"加载"或状态为"完成"时,它将被调度一次.如果是这种情况,那么您的问题将通过以下方式解决:
function test()
{
alert("In test!");
}
chrome.tabs.onUpdated.addListener(function(tabid, changeinfo, tab) {
var url = tab.url;
if (url !== undefined && changeinfo.status == "complete") {
test();
}
});
Run Code Online (Sandbox Code Playgroud)
我也对此感到困惑并试图找到答案.只有经过一些实验,我才弄清楚为什么我收到多个"完整"的更新事件,因为我认为这是单页"更新".
如果您的网页包含iframe,则每个网页都会触发"完整"事件并冒泡到父内容脚本.因此,如果更复杂的页面具有iframe,则会触发大量onUpdated事件.