javascript - 关闭窗口时触发ajax调用

标签 javascript jquery html

我需要在关闭窗口时触发一个方法。为此,我尝试添加一个警报声明,它在 IE 和 FIREFOX 中都运行良好。 但无法在 Chrome 中工作。请帮我解决这个问题..

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

最佳答案

你不能这么做。现代浏览器中无法可靠地对 beforeunload 事件执行非即时操作(特别是,通常会阻止所有涉及查询的操作)。这是一项安全措施:任何可能延迟或阻止用户要求关闭窗口的行为都是 Not Acceptable 。

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

关于警报和 Chrome,这里是 an extract from the MDN :

Since 25 May 2011, the HTML5 specification states that calls to window.showModalDialog(), window.alert(), window.confirm(), and window.prompt() methods may be ignored during this event.

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

关于javascript - 关闭窗口时触发ajax调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948339/

相关文章:

javascript - es6 javascript setter 函数在构造之外

javascript - 如何正确使用Xpath通过scrapy抓取AJAX数据?

javascript - 隐藏值不会在我的 JavaScript 中触发

html - 使用变换禁用缩放/旋转动画

javascript - 如何读取js中嵌入的html字符串?

html - 如何删除 Bootstrap 滚动条之间的空间?

JavaScript 查找对象的长度

javascript - Jest 在模块中找不到函数

javascript - 如果已单击父级,jQuery 显示子菜单

javascript - jquery 表排序器 : addParser does not sort properly