0

我需要在关闭窗口时触发一个方法。为此,我尝试发出警告声明,它在 IE 和 FIREFOX 中都运行良好但不适用于 chrome。请帮我解决这个问题..

$(window).bind('beforeunload', function(){
   alert ("before unload")
});
4

1 回答 1

3

你不能那样做。现代浏览器无法可靠地对beforeunload事件执行非即时操作(尤其是通常会阻止所有涉及查询的操作)。这是一种安全措施:任何可能延迟或阻止用户要求关闭窗口的行为都是可以接受的。

您需要更改应用程序的逻辑。现代 AJAX 应用程序必须不断地保存需要保存的数据或提供一种可见的方式来启动保存,它们不能等待窗口关闭。而且您必须在服务器端管理会话生命周期,而无需依赖浏览器发出注销。

关于警报和 Chrome,这里是 MDN 的摘录

自 2011 年 5 月 25 日起,HTML5 规范规定在此事件期间可以忽略对 window.showModalDialog()、window.alert()、window.confirm() 和 window.prompt() 方法的调用。

可能越来越多的浏览器会阻止这种警报,这在大多数情况下都是痛苦的。

于 2013-11-13T07:57:33.547 回答