【问题标题】:why is this setTimeout not working [duplicate]为什么这个 setTimeout 不起作用[重复]
【发布时间】:2011-02-25 10:42:02
【问题描述】:

我刚接触 Java。我正在编写一个简单的脚本来打开一个窗口,然后在短暂延迟后将其关闭。我尝试了以下各种含义但无济于事。该功能有效(因为它打开,然后关闭窗口)但延迟没有发生。

function manualWindow(){
testWindow = window.open("popup.php","interaction","resizable=0,width=800,height=600,status=0");
setTimeout(testWindow.close(),5000);
}

谢谢

【问题讨论】:

标签: javascript


【解决方案1】:

你想要:

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>

【讨论】:

  • 对不起 - 我已经尝试了你所有的建议,但都没有奏效。有什么我想念的吗?
  • 我已经用一个适合我的示例更新了我的答案。用 google 打开另一个窗口并在 5 秒后关闭它。
  • 再次尝试现在工作 - 感谢您的所有帮助 - 不胜感激
  • np,您能否将其作为接受的答案:D
【解决方案2】:

您没有正确使用 setTimeout。试试这个:

function manualWindow(){
   testWindow = window.open("popup.php","interaction","resizable=0,width=800,height=600,status=0");
   setTimeout(function() { testWindow.close(); },5000);
}

【讨论】:

    【解决方案3】:

    首先,您在匿名函数中定义代码。这个结构:

    (function() {
      ...
    )();
    

    做两件事。它定义了一个匿名函数并调用它。这样做是有原因的,但我不确定这是你真正想要的。

    您将代码块传递给setTimeout()。问题是update() 在这样执行时不在范围内。但是,如果您传入一个函数指针,那么它可以工作:

    (function() {
      $(document).ready(function() {
        update();
      });
    });
    

    因为函数指针更新在该块的范围内。

    但就像我说的,不需要匿名函数,所以你可以像这样重写它:

    【讨论】:

      【解决方案4】:

      我认为您的代码缺少第一个参数 testWindow.close() 中的引号。这可以通过以下方式更正:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 1970-01-01
        • 2011-08-21
        • 2014-10-24
        相关资源
        最近更新 更多