【发布时间】:2012-02-03 07:31:55
【问题描述】:
我有一个在网络浏览器中运行的游戏(作为插件),我想做的是:
检测用户是否决定关闭浏览器(Alt+F4、点击“X”按钮等)
当我们调用我们的网络服务以记录用户已关闭浏览器时,防止浏览器关闭
一旦我们收到来自 Web 服务的响应,释放锁定并允许浏览器按请求关闭。
我们想要这样做的主要原因是我们遇到了一些并发问题,并且通过我们的日志,我们希望将退出/关闭浏览器的人与插件崩溃的真实实例隔离开来。
我考虑过用 JQuery 来做这件事(为了 X-Browser 的兼容性 - Opera 不能工作,但幸运的是我们在 Opera 上没有任何用户):
$(window).bind('beforeunload', function(e) {
e.preventDefault();
// make AJAX call
});
问题在于,这会向用户显示一个确认对话框(“您确定要离开此页面吗”),用户可能会在发送 AJAX 调用之前确认该对话框。
所以问题是,有没有办法阻止浏览器在收到响应之前关闭?当页面更改时,'beforeunload' 也会触发 - 有没有办法区分点击链接和实际点击关闭?
感谢您对此的任何帮助!
【问题讨论】:
-
只是出于好奇......如果你交换“preventDefault”和“make ajax call”部分有什么区别吗?
标签: javascript jquery browser