Javascript 如何在一定时间段内自动打开和关闭弹出窗口
我正在制作一个网页,在其中我必须打开一个弹出窗口,它应该保持8秒(8000毫秒)的时间段打开 在此时间段后,弹出窗口应关闭。4秒钟后,我需要再次打开相同的弹出窗口8秒钟 我想在弹出窗口自动打开和关闭之前设置一些延迟(4秒),弹出窗口必须保持打开8秒 这是我的密码:Javascript 如何在一定时间段内自动打开和关闭弹出窗口,javascript,html,popup,Javascript,Html,Popup,我正在制作一个网页,在其中我必须打开一个弹出窗口,它应该保持8秒(8000毫秒)的时间段打开 在此时间段后,弹出窗口应关闭。4秒钟后,我需要再次打开相同的弹出窗口8秒钟 我想在弹出窗口自动打开和关闭之前设置一些延迟(4秒),弹出窗口必须保持打开8秒 这是我的密码: <html> <head> <script> function call() { popup = window.open('http:
<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>
函数调用()
{
弹出=窗口。打开('http://www.google.co.in');
setInterval(函数(){wait();},4000);
}
函数调用者()
{
setInterval(函数(){call();},5000);
}
函数wait()
{
popup.close();
}
我熟悉java脚本函数,如setInterval()
和setTimeout()
,但我发现它们在这种情况下都没有用处。
我也允许我的浏览器打开弹出窗口,但这个脚本会打开一个弹出窗口,并随着时间的推移关闭它。
请帮我找出代码中的小故障
谢谢。试试这些:
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
}
当前的调用()
每次执行时都会创建一个新的间隔。您可以将其作为“场景”编写:
如果您需要在某个步骤中重复该循环,当然可以使用next(0)
当然,必须有函数showPopup和hidePopup,你不能把你的时间间隔分配给任何变量,如果没有对这些时间间隔的引用,它们将无限期地运行,无法清除它们。使用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();
您的代码的格式看起来不错,但请尝试在代码上下功夫。
试着按照下面给出的方式使用它,这是你的全部代码,我已经在我的系统上试用过了,它正在工作
<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>
函数调用()
{
弹出=窗口。打开('http://www.google.co.in');
设置超时(等待,8000);
}
函数调用者()
{
设置间隔(呼叫,12000);
}
函数wait()
{
popup.close();
}
您好,您可以使用以下代码在特定间隔后关闭弹出窗口
<button class="btn btn-success" type="submit" id="spk_button" onclick="javascript:setTimeout(function(){window.close()},3000);">Save</button>
保存
此解决方案非常冗余。我不确定这真的是个好主意!Teemu的答案似乎更好,避免做很多不需要的测试。如果您愿意,您可以阅读以下内容:无论如何,您确切地知道将调用的交换机的下一个“case”是什么,因此我不认为switch语句适合这种情况。我同意,这是多余的,但它是通用的。当然,如果f.e.场景步骤被声明为数组或对象,那么它可以写得更好……可能是
<button class="btn btn-success" type="submit" id="spk_button" onclick="javascript:setTimeout(function(){window.close()},3000);">Save</button>