window.onclose 函数

IT技术 javascript jquery
2021-02-27 12:00:25

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

这是确认框弹出窗口。

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功能,但没有弹出。

有人可以帮我吗?

2个回答

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

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); 

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

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

对于弹出窗口,您可以获得关闭事件,并进行长时间的操作,但只能在打开器窗口中:

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

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

@Archer 对,我的回答太简短了。我进行了编辑以使其更清楚。
2021-05-02 12:00:25
您可以阻止窗口关闭,但只能在用户干预下进行。我将它与我制作的内联编辑器一起使用,它会告诉您在离开或关闭页面之前是否有未保存的更改......return "You have unsaved changes.";
2021-05-06 12:00:25