首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有可能用javascript打开弹出窗口,然后检测用户何时关闭它?

有没有可能用javascript打开弹出窗口,然后检测用户何时关闭它?
EN

Stack Overflow用户
提问于 2010-07-20 23:37:36
回答 7查看 89.2K关注 0票数 77

这个问题几乎都在标题中。

这是可能的(以及如何实现的?)用javascript打开弹出窗口,然后检测用户何时关闭它?

我在项目中使用jquery,所以jquery解决方案会很好。干杯!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-07-20 23:59:01

如果您可以控制弹出窗口的内容,请在那里处理窗口的unload事件,并通过opener属性通知原始窗口,首先检查打开程序是否已关闭。注意,这在Opera中并不总是有效的。

代码语言:javascript
复制
window.onunload = function() {
    var win = window.opener;
    if (!win.closed) {
        win.someFunctionToCallWhenPopUpCloses();
    }
};

由于unload事件将在用户离开弹出窗口中的页面时触发,而不仅仅是在窗口关闭时触发,因此应检查弹出窗口是否已在someFunctionToCallWhenPopUpCloses中实际关闭

代码语言:javascript
复制
var popUp = window.open("popup.html", "thePopUp", "");
function someFunctionToCallWhenPopUpCloses() {
    window.setTimeout(function() {
        if (popUp.closed) {
            alert("Pop-up definitely closed");
        }
    }, 1);
}

如果您无法控制弹出窗口的内容,或者您的某个目标浏览器不支持unload事件,则只能在主窗口中使用某种轮询解决方案。调整间隔以适应需要。

代码语言:javascript
复制
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);
票数 105
EN

Stack Overflow用户

发布于 2014-09-03 18:18:11

你的问题有一个非常简单的解决方案。

首先创建一个新对象,它将打开一个如下所示的弹出窗口:

代码语言:javascript
复制
var winObj = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');

为了知道这个弹出窗口何时关闭,您只需使用如下所示的循环不断地进行检查:

代码语言:javascript
复制
var loop = setInterval(function() {   
    if(winObj.closed) {  
        clearInterval(loop);  
        alert('closed');  
    }  
}, 1000); 

现在,您可以将alert替换为所需的任何javascript代码。

玩得开心!:)

票数 12
EN

Stack Overflow用户

发布于 2010-07-20 23:46:14

尝试查看unloadbeforeunload窗口事件。监视这些应该给你一个机会,当DOM卸载时,当窗口被关闭时,通过类似这样的东西:

代码语言:javascript
复制
var newWin = window.open('/some/url');
newWin.onunload = function(){
  // DOM unloaded, so the window is likely closed.
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3291712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档