javascript 如何在X秒后应用window.close()?

vatpfxk5  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(134)

我有一个弹出窗口,其中包含一个onclick操作,用于在按下提交按钮时关闭框:

<input type="submit" name="submit" value="submit" onclick="javascript: window.close();">

我正试图调整它等待3秒钟后,提交按钮被点击关闭。
我读过一篇文章,建议使用这在:

<script> 
setTimeout("window.close()",3000) 
</script>

但无论是否点击按钮,它都会在3秒后关闭弹出窗口。
我怎样才能使它与按钮配合使用?

t3irkdon

t3irkdon1#

您的第一个版本与编写的版本相同

<input type="submit" name="submit" value="submit" onclick="javascript: window.close();">

因为它将在单击时关闭窗口。
你的第二个版本和写的一样。但是你看起来有点困惑,所以让我解释一下。

<script> 
 setTimeout("window.close()",3000) 
</script>

当这个函数内嵌在你的html文件中时,它将在视图渲染时执行。当执行时,这个代码将从字符串参数构造一个新的函数,然后在3000毫秒内调用它。
它不依赖于任何东西,只是在渲染引擎遇到它时运行。
为了把这个和(而不仅仅是像第一个版本中所示的那样采取将其放置在元素上的快捷方式)您将需要一个 * 事件 *,在JavaScript中,这个事件将是click事件,为了访问click事件,你需要在你想要处理事件的元素上放置一个clickeventhandler。为了访问元素,必须在加载DOM时查询页面。
querySelectorAll documentation

<script>
window.onload = function(){ //this line of code will wait for the DOM to load
 //once loaded, it will execute the "anonymous" function which is the code here

 //now in here we can find the element
 //since there is no id or class, we can look for an input with name=submit
 var submitInput = document.querySelectorAll("input[name=submit]")[0];

 //once the element is found, we can attach the handler to it
 submitInput.onclick = function(){ //once again this "anonymous" function executes when the event fires
  //in here you can execute the timeout
  //lets use an anonymous function instead of constructing one from a string
  setTimeout(function(){
   window.close();
  },3000);
 };
};
</script>

完成此操作后,可以从元素中移除onclick事件处理程序

<input type="submit" name="submit" value="submit" />

这就是适合您的情况的最佳实践方法。

  • jQuery语言 *

如果您决定使用jQuery来完成这一任务,那么可以使用document.ready功能的快捷方式(例如等待所有元素可用),然后在该快捷方式的回调中,您可以将目标指向该元素(在jQuery中,您使用css-ish选择器),然后告诉jQuery注册click事件,这涉及到另一个回调函数。
它看起来像这样:

<script>
 $(function(){//document.ready shortcut
  $("input[name=submit]").click(function(){//target element and request click event
   setTimeout(function(){window.close();},3000);//timeout code to close window
  });
 });
</script>
wpx232ag

wpx232ag2#

试着把所有东西都结合起来:

<input type="submit" name="submit" value="submit" onclick="setTimeout('window.close()',3000);">
m528fe3b

m528fe3b3#

尝试:

<input type="submit" name="submit" value="submit" onclick="closeWindow()">

然后在Javascript中添加如下函数:

function closeWindow(){
    setTimeout("window.close()", 3000);
}

没有测试过,但应该能用。

wkyowqbh

wkyowqbh4#

这对我来说确实很有效:

<html>
<head>
</head>
<body >

This page will be closed in a few seconds.
<script>
    setTimeout(function() {window.close()}, 5000);
</script>
</body>

相关问题