setTimeout()获取窗口以在setTimeout激活之前显示其他脚本函数

时间:2011-11-07 10:51:08

标签: javascript settimeout

我确信这是一个多次被问到的一般性问题,但是找不到解决方案。

我使用setTimeout()函数来关闭我在设定时间后创建的弹出窗口。

问题: 如果我在与创建弹出窗口的脚本相同的脚本中调用setTimeout()函数,则弹出窗口不会显示窗口的内容,而是整个事件的功能类似于单个脚本,窗口关闭。就像你需要以某种方式中断脚本,让它在执行setTimeout之前解析脚本的每个部分。

有谁知道为什么或有解决方法?

<script>
var w;
function closeWindow(){ setTimeout(w.close();, 10000);}

function createWindow(){
//create the popup window.

w=window.open("","",'width=200,height=100');

// put something into the popup window
try{w.document.write('<html><head></head><body><p>the w window</p></body>  
<html>')}catch(err){
//handle error here
}

closeWindow();

//closes the createWindow() function
}
</script>

3 个答案:

答案 0 :(得分:1)

使用setTimeout的正确语法:

setTimeout(function() {
    w.close();
}, 10000);

该函数获取字符串文字然后评估或执行命令的更好选项是一个函数:它可以是现有函数的名称(参见下面的示例)或类似上面的匿名函数

以不同方式使用该功能的示例:

window.setTimeout(closeWindow, 10000);

该功能将在:

function closeWindow() {
    w.close();
}

答案 1 :(得分:1)

尝试以下方法:

setTimeout(w.close, 10000);

答案 2 :(得分:1)

我玩了你的剧本。以下是经过测试和运作的:

var w;
function closeWindow(){ setTimeout("w.close();", 10000);}

function createWindow(){
//create the popup window.

w=window.open("","",'width=200,height=100');

// put something into the popup window
try{w.document.write('<html><head></head><body><p>the w window</p></body> <html>')}catch(err){
//handle error here
}
closeWindow();
//closes the createWindow() function
}

如果我没记错的话,在setTimeout函数的code参数周围需要引号,否则你将传递代码的返回值作为setTimeout的参数而不是它需要运行的代码。

希望这有帮助。