我确信这是一个多次被问到的一般性问题,但是找不到解决方案。
我使用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>
答案 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的参数而不是它需要运行的代码。
希望这有帮助。