JavaScript - 当用户确认离开页面时运行代码
JavaScript - Run code when user confirms leaving page
我希望用户确认他想离开页面。我用jQuery这样做:
$(window).bind('beforeunload', function(){
return "Are you sure?";
});
如果用户说"是",我想在浏览器选项卡关闭之前运行一个函数,该函数发出 ajax 请求以保存一些数据。这可能吗?在这种情况下,如何?
你问的是不可能的。 beforeunload
不允许你自己做提示,然后根据问题的回答方式进行分支。 它只允许您运行代码或返回提示字符串,该字符串仅确定用户是否离开页面。
在您的特定情况下,我建议您在收到此回调时始终保存数据(例如在文字处理器中自动保存(。 如果用户选择留在页面上并进行更多更改,则可以在以后他们离开页面时再次保存数据的新状态。 您必须仔细测试多个浏览器,以确保在beforeunload
处理程序中启动的 ajax 调用能够正确完成。 似乎应该,但浏览器之间可能存在实现差异。
仅供参考,beforeunload
如此严格的原因是因为它必须防止恶意网页的滥用,这些网页会阻止您在想要时离开他们的网站。
正如 jfriend00 提到你试图做的事情是不可能的。不过,最好的选择是当他们按下后退按钮时保持悲观。我的意思是:
$(window).bind('beforeunload', function(){
$.ajax({
//Do ajax call to save
});
return "Are you sure?";
});
这将做的是希望为您的ajax调用发送时间并通知服务器新数据。我说希望是因为当您离开页面时,浏览器会杀死所有请求。
要记住的另一件事是,当用户强制关闭浏览器时,不会触发此操作。
相关文章:
- AJAX调用运行C代码的最佳实践
- 在经过一段时间或满足条件后运行代码
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 如果调试器关闭,Internet Explorer将出现运行代码问题
- JQuery 帖子未在 PHP 文件中运行代码
- 当ajax请求发生时运行代码的Chrome扩展
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 仅当客户端连接到Meteor服务器时才运行代码
- 在.each()循环中的ajax完成后,Jquery运行代码
- node.js和Cygein,我该如何运行代码
- 未访问全局变量,未运行代码
- Meteor - 在客户端上的异步回调的 for 循环后运行代码
- 运行代码以在Android应用程序中单击javascript按钮?尝试在页面上抓取回复按钮联系信息 craigslist
- 函数结束时如何运行代码
- JS 在不满足条件时在 if 语句中运行代码段
- 在 Ember 视图参数更改上运行代码
- 如何在 YUI 模块中运行代码
- 如何在未在 iframe 中定义的 iFrame 中运行代码
- 在后台运行代码,同时显示警报
- 加载页面时运行代码