ASP.NET:关闭窗口时出现更改数据的警告
ASP.NET: Warning on changed data closing windows
当用户试图关闭浏览器窗口时,如果他们没有保存在web表单中所做的更改,我想警告他们。
我使用的是ASP.NET 3.5(带有ASP.NET Ajax)。
有没有一个我可以轻松实现的通用解决方案?
编辑:也许我的问题不清楚:我正在专门寻找一种在ASP.NET服务器控制方法中优雅集成的方法。
这里有一个ASP.NET扩展程序控件,可以帮助您完成以下操作:
http://www.codeproject.com/KB/ajax/ajaxdirtypanelextender.aspx
希望这能有所帮助。它可能不完全符合你的需求,但它至少向你展示了如何。
您将希望利用
window.onbeforeunload
事件。类似于Gmail,如果你在没有保存合成电子邮件的情况下试图关闭窗口。
这里有一些JS示例。
http://forums.devarticles.com/javascript-development-22/how-to-stop-browser-from-closing-using-javascript-8458.html
只需添加window.onbeforeunload
事件。这将显示一个模式窗口,您可以在其中决定停留或离开页面。
window.onbeforeunload = function (event) {
var message = 'All changes will get lost!';
if (typeof event == 'undefined') {
event = window.event;
}
if (event) {
event.returnValue = message;
}
return message;
}
所有浏览器都会提供一条标准消息("您确定要离开此页面吗?")以及您的自定义消息。
因此窗口将如下所示:
---------------------------------
| Are you sure you want to |
| navigate away from this page? |
| |
| All changes will get lost! |
| |
| [Cancel] [Ok] |
---------------------------------
您可以创建一个扩展IExtenderProvider的控件,并让它创建JavaScript来跟踪更改(或者更可能使用更改跟踪机制注册控件)。
不过,您仍然需要在Javascript中实现更改跟踪,除非您需要大量的Postback。
我在以前的一位雇主使用Prototype.Js做过这件事。我认为唯一困难的是Internet Explorer和Firefox要求设置"取消导航"标志的方式之间的差异。
正如其他人所提到的,您需要查看window.onunload/obeforeunload事件。此事件的问题在于,每当卸载页面时都会调用它。不仅当浏览器窗口关闭时,而且当您单击同一浏览器窗口中的链接以转到同一网站上的不同页面时。你仍然可以做你想做的事,但如果你能预料到这种行为,这会有所帮助。
在Page_Unload事件(或在body标记<body onunload="onPageUnload();">
中调用此函数)上,您可以检查表单中是否有数据。然后您可以运行一些Java:
<script language="text/javascript">
function onPageUnload() {
var oConfirm = window.confirm("You have unsaved form data, are you sure you want to close this window?");
if(oConfirm){
//Close
}else{
//Dont
}
}
</script>
看看你的是如何运作的
编辑:它可能不会阻止窗口的关闭,但它会提醒您的用户,他们在您的表单中有未保存的数据。
确认不适用于跨浏览器,我将调查一个不同的方法并将其发布在这里。
- 用程序搜索JQuery数据表中的文本
- 正确禁止显示数据表中的警告
- jquery DataTable 数据格式和警告 - 添加的数据与已知列数不匹配
- 如何在表空或在jquery数据表中找不到匹配项的情况下添加自定义警告消息
- 双击 td 时,如何在警告框中将数据库中的数据显示为 html 表
- 如何以编程方式在 ADF 中实现未提交的数据警告
- 删除行时,数据表显示警告
- 单击按钮时,警告框显示表单数据
- 当警告用户他们正在留下未保存数据的表单时,停止带有提交按钮的回发
- 如何使用Jquery保存数据后显示警告消息
- 如何将数据从php发送到jquery ajax成功处理程序,以防php抛出警告
- 动态警告:无法获取数据URL
- 为什么警告框弹出,即使我输入正确数量的字符串/数据
- 警告数组内的数据细节
- 数据表初始化警告
- 当我尝试在按键事件中验证jsp表单时,在将任何数据输入到输入字段之前,都会出现警告框
- 我没有得到JSON数据,尽管它被正确加载了,为什么会发生这种情况?它显示一个空白的警告框
- 如果加载了localStorage数据,就警告用户
- 为网页提供动态数据,避免跨域警告和防火墙阻塞
- ASP.NET:关闭窗口时出现更改数据的警告