Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome extension popup.js中的setTimeout函数问题_Javascript_Google Chrome Extension_Settimeout - Fatal编程技术网

Javascript chrome extension popup.js中的setTimeout函数问题

Javascript chrome extension popup.js中的setTimeout函数问题,javascript,google-chrome-extension,settimeout,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 aj

我有一个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操作新选项卡登录的页面。唯一的问题是,页面有一半时间没有准备好。

尝试4和5应该是:

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

没有发生延迟,因为您将它们称为内联。

尝试1-3有什么问题?抱歉,刚刚更新了它。为了延迟函数,我添加了延迟量(以毫秒为单位)。前两个工作没有延误。试试三个从未调用过的函数。我试过了。如果我这样调用它,函数就不会运行。似乎只有在包含()的情况下它才有效。@杰克,那是因为你当时正在调用它,而这不是你想要的。这是一个内容脚本吗?不,它没有定义为内容脚本。这只是一个生成弹出窗口的.js文件。@jack,jack,有什么更新吗?我在我的google chrome扩展(script.js)中使用setTimeout()。但它似乎根本不会触发。你把它修好了吗?
setTimeout
没有按预期工作,它会立即执行,不管你指定了什么延迟!