【发布时间】:2011-05-29 14:00:25
【问题描述】:
我的(测试)Chrome 扩展中有一段非常简单的代码:
function test()
{
alert("In test!");
}
chrome.tabs.onUpdated.addListener(function(tabid, changeinfo, tab) {
var url = tab.url;
if (url !== undefined) {
test();
}
});
我的问题是,为什么test() 会触发两次?更重要的是,如何让它只触发一次?
【问题讨论】:
-
我的猜测是确实发生了 2 个选项卡更新,导致事件处理程序触发两次。
-
我只有那一段代码...那么第二段来自哪里?
-
请参阅我的回答,了解为什么您的代码看起来只会调用一次
test(),但实际上它可以调用test()任意次数。 -
很好,罗伯。更准确地说是“任意次数”并回答第二次调用来自何处的问题:每个初始选项卡加载更新选项卡的状态为“加载”-> 调用 #1。当它完成加载时,它的状态将 updated 为“完成” -> 调用 #2。因此,对于每个 页面加载,tab 对象 会更新两次。
标签: javascript google-chrome google-chrome-extension