卸载时关闭许多弹出窗口 windows
Closing many pop-up windows on unload
这是我的网站:http://www.brute.adult. And here is the codepen : https://codepen.io/vaninoo/pen/GMbbEg。
正如您在网站上看到的那样,当您点击链接时,会出现许多弹出窗口。我一直试图让它们在卸载时消失。弹出窗口的名称如下:
$( "#title1" ).click(function() {
popup1 = window.open("protein.html", "_blank","menubar=no,location=no,resizable=no,scrollbars=no,status=yes,top=0,left=500,width=500,height=500");
setTimeout(function(){
var popup2 = window.open("protein2.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=300,left=100,width=500,height=600");
}, 500);
setTimeout(function(){
var popup3 = window.open("protein3.html", "_blank","toolbar=no,scrollbars=yes,resizable=yes,top=10,left=2000,width=400,height=700");
}, 1000);
setTimeout(function(){
var popup4 = window.open("protein4.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=50,left=50,width=400,height=400");
}, 1500);
});
如您所见,其中一些被延迟以在 windows 开头创建节奏。它们的变量名分别是popup1、popup2、popup3、popup4等
下面是我尝试过但没有成功的解决方案:
1) 一个一个地关闭它们,但出于某种我无法弄清楚的原因,这只适用于 popup1:
$(window).on('beforeunload', function() {
if(popup1) {
popup1.close();
}
else {}
});
$(window).on('beforeunload', function() {
if(popup2) {
popup2.close();
}
else {}
});
2) 尝试迭代它们。我将通过添加警报逐个获取 popup1、popup2 等的名称,因此 "while" 的第一部分有效。但是 "if" 没有:
$(window).on('beforeunload', function() {
var popup = "popup";
var i = 0;
while (i < 3) {
namesofpopups = popup + i;
i++;
if(namesofpopups) {
namesofpopups.close();
}
}
});
我已经研究这个很久了,我在 codepen 上让它更容易理解。如果有人可以提供帮助,将不胜感激!
谢谢你,抱歉这么久post!
这是由于弹出引用变量的范围。您已经在点击处理程序中定义了它们(popup1
除外),因此无法从 onbeforeunload
事件处理程序访问它们。
要解决此问题,最好将引用推送到一个数组中,您可以在卸载选项卡时循环访问该数组,如下所示:
var popups = [];
$("#title1").click(function() {
popups.push(window.open("protein.html", "_blank", "menubar=no,location=no,resizable=no,scrollbars=no,status=yes,top=0,left=500,width=500,height=500"));
setTimeout(function() {
popups.push(window.open("protein2.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=300,left=100,width=500,height=600"));
}, 500);
// other popups...
});
$(window).on('beforeunload', function() {
popups.forEach(function(popup) {
popup.close();
});
});
话虽这么说,用弹出窗口轰炸您的用户是非常烦人的。事实上,如果你对我这样做,我会故意不使用你的网站。如果您确实需要这种行为,我建议您考虑在您的页面内使用模态弹出窗口。
这是我的网站:http://www.brute.adult. And here is the codepen : https://codepen.io/vaninoo/pen/GMbbEg。
正如您在网站上看到的那样,当您点击链接时,会出现许多弹出窗口。我一直试图让它们在卸载时消失。弹出窗口的名称如下:
$( "#title1" ).click(function() {
popup1 = window.open("protein.html", "_blank","menubar=no,location=no,resizable=no,scrollbars=no,status=yes,top=0,left=500,width=500,height=500");
setTimeout(function(){
var popup2 = window.open("protein2.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=300,left=100,width=500,height=600");
}, 500);
setTimeout(function(){
var popup3 = window.open("protein3.html", "_blank","toolbar=no,scrollbars=yes,resizable=yes,top=10,left=2000,width=400,height=700");
}, 1000);
setTimeout(function(){
var popup4 = window.open("protein4.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=50,left=50,width=400,height=400");
}, 1500);
});
如您所见,其中一些被延迟以在 windows 开头创建节奏。它们的变量名分别是popup1、popup2、popup3、popup4等
下面是我尝试过但没有成功的解决方案:
1) 一个一个地关闭它们,但出于某种我无法弄清楚的原因,这只适用于 popup1:
$(window).on('beforeunload', function() {
if(popup1) {
popup1.close();
}
else {}
});
$(window).on('beforeunload', function() {
if(popup2) {
popup2.close();
}
else {}
});
2) 尝试迭代它们。我将通过添加警报逐个获取 popup1、popup2 等的名称,因此 "while" 的第一部分有效。但是 "if" 没有:
$(window).on('beforeunload', function() {
var popup = "popup";
var i = 0;
while (i < 3) {
namesofpopups = popup + i;
i++;
if(namesofpopups) {
namesofpopups.close();
}
}
});
我已经研究这个很久了,我在 codepen 上让它更容易理解。如果有人可以提供帮助,将不胜感激!
谢谢你,抱歉这么久post!
这是由于弹出引用变量的范围。您已经在点击处理程序中定义了它们(popup1
除外),因此无法从 onbeforeunload
事件处理程序访问它们。
要解决此问题,最好将引用推送到一个数组中,您可以在卸载选项卡时循环访问该数组,如下所示:
var popups = [];
$("#title1").click(function() {
popups.push(window.open("protein.html", "_blank", "menubar=no,location=no,resizable=no,scrollbars=no,status=yes,top=0,left=500,width=500,height=500"));
setTimeout(function() {
popups.push(window.open("protein2.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=300,left=100,width=500,height=600"));
}, 500);
// other popups...
});
$(window).on('beforeunload', function() {
popups.forEach(function(popup) {
popup.close();
});
});
话虽这么说,用弹出窗口轰炸您的用户是非常烦人的。事实上,如果你对我这样做,我会故意不使用你的网站。如果您确实需要这种行为,我建议您考虑在您的页面内使用模态弹出窗口。