这个问题几乎都在标题中。
这是可能的(以及如何实现的?)用javascript打开弹出窗口,然后检测用户何时关闭它?
我在项目中使用jquery,所以jquery解决方案会很好。干杯!
发布于 2010-07-20 23:59:01
如果您可以控制弹出窗口的内容,请在那里处理窗口的unload
事件,并通过opener
属性通知原始窗口,首先检查打开程序是否已关闭。注意,这在Opera中并不总是有效的。
window.onunload = function() {
var win = window.opener;
if (!win.closed) {
win.someFunctionToCallWhenPopUpCloses();
}
};
由于unload
事件将在用户离开弹出窗口中的页面时触发,而不仅仅是在窗口关闭时触发,因此应检查弹出窗口是否已在someFunctionToCallWhenPopUpCloses
中实际关闭
var popUp = window.open("popup.html", "thePopUp", "");
function someFunctionToCallWhenPopUpCloses() {
window.setTimeout(function() {
if (popUp.closed) {
alert("Pop-up definitely closed");
}
}, 1);
}
如果您无法控制弹出窗口的内容,或者您的某个目标浏览器不支持unload
事件,则只能在主窗口中使用某种轮询解决方案。调整间隔以适应需要。
var win = window.open("popup.html", "thePopUp", "");
var pollTimer = window.setInterval(function() {
if (win.closed !== false) { // !== is required for compatibility with Opera
window.clearInterval(pollTimer);
someFunctionToCallWhenPopUpCloses();
}
}, 200);
发布于 2014-09-03 18:18:11
你的问题有一个非常简单的解决方案。
首先创建一个新对象,它将打开一个如下所示的弹出窗口:
var winObj = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');
为了知道这个弹出窗口何时关闭,您只需使用如下所示的循环不断地进行检查:
var loop = setInterval(function() {
if(winObj.closed) {
clearInterval(loop);
alert('closed');
}
}, 1000);
现在,您可以将alert替换为所需的任何javascript代码。
玩得开心!:)
发布于 2010-07-20 23:46:14
尝试查看unload
和beforeunload
窗口事件。监视这些应该给你一个机会,当DOM卸载时,当窗口被关闭时,通过类似这样的东西:
var newWin = window.open('/some/url');
newWin.onunload = function(){
// DOM unloaded, so the window is likely closed.
}
https://stackoverflow.com/questions/3291712
复制相似问题