如何在特定时间段内自动打开和关闭弹出窗口

时间:2013-05-29 07:20:30

标签: javascript html popup

我正在制作一个网页,我必须打开一个弹出窗口,它应该保持打开8秒(8000毫秒)的时间段。

在此时间段之后应该关闭弹出窗口。然后在4秒后我再次需要打开相同的弹出窗口8秒钟。

我想在弹出窗口打开并自动关闭之前放一些延迟(4秒),弹出窗口必须保持打开状态8秒

这是我的代码:

<html>
<head>
    <script>
        function call()
        {
            popup = window.open('http://www.google.co.in');         
            setInterval(function() {wait();},4000);
        }   
        function caller()
        {
            setInterval(function() {call();},5000);
        }
        function wait()
        {
            popup.close();
        }
    </script>
</head>
<body onload="caller();">
</body>
</html> 

我熟悉像setInterval()setTimeout()这样的java脚本函数,但我发现在这种情况下它们都没有用。 我还允许我的浏览器打开Popups,但是这个脚本会打开一个弹出窗口,并在时间过后尽快关闭它。 请帮助我找出代码中的故障。

谢谢。

5 个答案:

答案 0 :(得分:4)

您的代码在格式化方面看起来很好但是尝试在您的代码上付出一些努力 尝试使用下面给出的,这是您的整个代码,我已经在我的系统上尝试过,它是正常工作

<html>
<head>
    <script>
        function call()
        {
            popup = window.open('http://www.google.co.in');         
            setTimeout(wait, 8000);
        }   
        function caller()
        {
            setInterval(call, 12000);
        }
        function wait()
        {
            popup.close();
        }
    </script>
</head>
<body onload="caller();">
</body>
</html>

答案 1 :(得分:2)

试试这些:

function call() {
    popup = window.open('http://www.google.co.in');         
    setTimeout(wait, 8000); // closes the pop-up after 8 secs delay
}

function caller(){
    setInterval(call, 12000); // opens a pop-up on every 12th second
}

您当前的call()每次执行时都会创建一个新区间。

答案 2 :(得分:1)

您没有将间隔分配给任何变量,如果没有引用这些间隔,它们将无限期地继续运行而无法清除它们。使用setTimeout做一个你想做的事情的方法可能会更好,因为打开/关闭和重新打开之间的时间段都是不同的,你也可以不断地运行间隔。下面的代码创建了一个循环,它将无限期地运行,直到你想要它停止。

var popup = {
    open : function()
    {
        // Open popup
        this.popupWindow = window.open('http://www.google.co.in');

        // Return a timeout function
        return setTimeout(function() {
            // run close function on completion of timeout
            popup.close();
        }, 8000);
    },
    close : function()
    {
        this.popupWindow.close();
        // Assign timeout to local variable
        this.timeout = this.loop();
    },
    loop : function()
    {
        var self = this;

        // On first run open popup immediately, or wait 4 seconds and restart
        // the loop
        if (self.active === true)
        {
            return setTimeout(function() {
                self.timeout = self.open();
            }, 4000);
        }
        else
        {
            self.active = true;
            self.timeout = self.open();
        }
    },
    clearLoop : function()
    {
        clearTimeout(this.timeout);
        this.active = false;
    }
};

popup.loop();

可以随时停止循环

popup.clearLoop();

答案 3 :(得分:1)

您好,您可以使用以下代码

在特定时间间隔后关闭弹出窗口
 <button class="btn btn-success" type="submit" id="spk_button" onclick="javascript:setTimeout(function(){window.close()},3000);">Save</button>

答案 4 :(得分:0)

您可以将其编写为“方案”:

function next(state) {
  switch(state) {
    case 0:
      showPopup();
      setTimeout("next(1);",8000);
    break;
    case 1:
      hidePopup();
      setTimeout("next(2);",4000);
    break;
    case 2:
      showPopup();
      setTimeout("next(3);",8000);
    break;

    ...etc...

  }
}

/* this you have to call at start */
function init() {
  next(0);
}

如果您需要在某个步骤中重复循环,您当然可以使用next(0)。

当然必须有showPopup和hidePopup函数