gpt4 book ai didi

javascript - 当弹出窗口关闭时,我将如何引发事件(jQuery 或 vanilla Javascript)?

转载 作者:可可西里 更新时间:2023-11-01 01:57:21 25 4
gpt4 key购买 nike

我想在弹出窗口关闭时引发事件,或者最好是在关闭之前引发事件。我将弹出窗口对象存储为一个对象,但我不知道有什么方法可以绑定(bind)到关闭事件或窗口关闭之前的事件。

var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");

有什么方法可以使用 jQuery 或仅使用原始 javascript 来订阅关闭事件吗?我正在使用 jQuery 并且无法添加另一个库,所以如果它不能在 jQuery 中完成,我将不得不以某种方式推出我自己的事件系统,以便它可以在所有浏览器上工作。

更新:
我试过在 jQuery 中使用 unload 事件,由于某种原因,一旦我的弹出窗口打开而不是关闭时,就会引发该事件。如果我使用 Firebug 设置断点以延迟订阅卸载事件,则卸载事件按预期方式工作,但无论出于何种原因,当允许 javascript 自然执行时它无法正常工作。

var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
$(popupWindow.window).unload(function() { alert('hello'); });

有人知道为什么在加载窗口时会引发卸载事件吗?

另一个问题是,我注意到 jQuery 的“卸载”事件不会像通常那样订阅窗口:

popupWindow.onunload = function(){alert('hello')};

好像每次发起都取消订阅事件。这应该发生吗?如果不是因为 jQuery 中的这个错误(或功能?),那么在加载时引发事件会很好,因为我可以检查事件中的 popupWindow.closed 属性以确保 window 真的关上了。

最佳答案

我创建了一个观察者来检查窗口是否已经关闭:

var w = window.open("http://www.google.com", "_blank", 'top=442,width=480,height=460,resizable=yes', true);
var watchClose = setInterval(function() {
if (w.closed) {
clearTimeout(watchClose);
//Do something here...
}
}, 200);

关于javascript - 当弹出窗口关闭时,我将如何引发事件(jQuery 或 vanilla Javascript)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/140133/

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