4

我正在制作一个网页,我必须在其中打开一个弹出窗口,它应该保持打开状态 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> 

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

谢谢你。

4

5 回答 5

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>
于 2013-06-07T12:48:38.803 回答
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
}

您的 currentcall()每次执行时都会创建一个新的间隔。

于 2013-05-29T07:28:39.760 回答
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();
于 2013-05-29T07:40:49.530 回答
1

嗨,您可以使用以下代码在特定时间间隔后关闭弹出窗口

 <button class="btn btn-success" type="submit" id="spk_button" onclick="javascript:setTimeout(function(){window.close()},3000);">Save</button>
于 2014-09-19T13:27:40.317 回答
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

于 2013-05-29T07:31:14.853 回答