gpt4 book ai didi

javascript - 卸载时关闭许多弹出窗口

转载 作者:行者123 更新时间:2023-11-30 14:58:09 24 4
gpt4 key购买 nike

这是我的网站:http://www.brute.adult .这是代码笔: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);
});

如您所见,其中一些被延迟以在窗口打开时创建节奏。它们的 var 名称是 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”的第一部分有效。但是“如果”不是:

$(window).on('beforeunload', function() {
var popup = "popup";
var i = 0;

while (i < 3) {
namesofpopups = popup + i;
i++;

if(namesofpopups) {
namesofpopups.close();
}
}
});

我已经研究这个很久了,我在 codepen 上让它更容易理解。如果有人可以提供帮助,我们将不胜感激!

谢谢你,抱歉发了这么长的帖子!

最佳答案

这是由于弹出引用变量的范围。您已经在点击处理程序中定义了它们(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();
});
});

话虽这么说,用弹出窗口轰炸您的用户是非常烦人的。事实上,如果你对我这样做,我会故意不使用你的网站。如果您真的需要这种行为,我建议您考虑在您的页面中使用模态弹出窗口。

关于javascript - 卸载时关闭许多弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46930184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com