19

我使用这个函数来关闭我的窗口。

这是确认框弹出窗口。

if(confirm("Sure you want to close the window");
{
     // yes return to submit function
}
else
{
  // no return to Other call function
}

window.onclose = function()
{
  alert('yes');
}

在右上角用 X 符号关闭窗口时,我需要返回 false。我正在尝试使用此window.onclose功能,但它没有弹出。

有人可以帮帮我吗?

4

2 回答 2

48

不幸的是,弹出窗口没有任何您可以收听的关闭事件,但是当窗口关闭时有一个关闭的属性为真。解决此问题的一个解决方案是启动一个计时器并每秒检查一次子窗口的关闭属性,并在窗口关闭时清除计时器。这是代码:

var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');   
var timer = setInterval(function() {   
    if(win.closed) {  
        clearInterval(timer);  
        alert('closed');  
    }  
}, 1000); 
于 2013-04-02T16:43:32.257 回答
29

今天的浏览器无法捕捉到“关闭”事件。

有一个onbeforeunload,但是当它被调用时你不能做很多事情,特别是你不能在没有用户同意的情况下阻止窗口关闭,如果你从正在关闭的页面尝试它们,大多数远程操作都会失败。

对于弹出窗口,您可以获取关闭事件,并进行长时间操作,但仅限于打开窗口:

 var w = window.open('popup.html');
 w.onbeforeunload = function(){
       // set warning message
 };

重要提示:在最近的 chrome 版本中,onbeforeunload只允许你设置警告信息;您可能不会运行额外的逻辑。

于 2013-04-02T16:39:35.537 回答