我刚刚进入Java。我正在编写一个简单的脚本来打开一个窗口,然后在短暂的延迟后关闭它。我已经尝试了以下各种内涵,但无济于事。该函数有效(因为它打开,然后关闭窗口),但延迟不会发生。
function manualWindow(){
testWindow = window.open("popup.php","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(testWindow.close(),5000);
}
谢谢
答案 0 :(得分:19)
你想:
setTimeout(function() { testWindow.close(); },5000);
当前代码在命中后立即执行该函数,然后在延迟后尝试运行它的返回值。通过将其包裹在功能中,它将在5秒后正确运行。
示例:
<html>
<head></head>
<body>
<script type="text/javascript">
function manualWindow(){
testWindow = window.open("http://www.google.co.uk","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(function() { testWindow.close() },5000);
}
manualWindow();
</script>
</body>
</html>
答案 1 :(得分:0)
您没有正确使用setTimeout。试试这个:
function manualWindow(){
testWindow = window.open("popup.php","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(function() { testWindow.close(); },5000);
}
答案 2 :(得分:0)
首先,您要在匿名函数中定义代码。这个结构:
(function() {
...
)();
做两件事。它定义了一个匿名函数并调用它。这样做的范围很广,但我不确定这是你真正想要的。
您将代码块传递给setTimeout()
。问题是update()
在执行时不在范围内。但是,如果你传入一个函数指针,那么它可以工作:
(function() {
$(document).ready(function() {
update();
});
});
因为函数指针更新在该块的范围内。
但就像我说的那样,不需要匿名函数,所以你可以像这样重写它:
答案 3 :(得分:-2)
我认为你的代码缺少第一个参数testWindow.close()中的qutoes。这可以通过以下方式纠正:
function manualWindow() {
testWindow = window.open("http://www.google.com", "interaction", "resizable=0,width=800,height=600,status=0");
setTimeout('testWindow.close()',5000);
}
manualWindow();
我发现此链接可能对您有所帮助https://developer.mozilla.org/en/DOM/window.setTimeout