chrome扩展popup.js问题中的setTimeout函数

时间:2012-06-24 23:48:11

标签: javascript google-chrome-extension settimeout

我有一个包含一系列功能的popup.js文件。我正在尝试运行一个函数,该函数设置为在创建新选项卡时运行,但延迟时间很短。这是一个功能示例和我尝试过的解决方案。

// function.
function foo_bar()
{
 // some ajax call.
}

// try 1
setTimeout(foo_bar,1000);
EDIT:// executed without delay.

// try 2
setTimeout(function(){
//some ajax call.
},1000)
EDIT:// executed without delay.

// try 3
setTimeout(function(){
foo_bar();
},1000)
EDIT: // didn't seem to execute.

// try 4 and 5
window.addEventListener('load',foo_bar());
window.addEventListener('DOMContentLoaded',foo_bar());
// no delay takes place. The function completes before the page even loads.


// try 6
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {...}); 
// used the status from here to wait till page load is complete.
//problem with this is that sometimes the status doesn't get updated.

// try 7
// tried to delay the php script by using sleep(2), but ajax call would never complete.

有人可以帮忙吗?不确定它是否有帮助,但脚本未定义为背景或内容。

编辑:更详细一些。调用的函数是执行对远程服务器的ajax调用,然后根据数据,使用chrome.tabs.executeScript操纵新选项卡所在的页面。唯一的问题是,页面没有准备好一半时间。

1 个答案:

答案 0 :(得分:1)

尝试4和5应该是:

window.addEventListener('load',foo_bar);
window.addEventListener('DOMContentLoaded',foo_bar);

没有发生延迟,因为你是内联电话。