我有一个用于数据输入的 asp.net 页面,当用户从页面移出而不执行保存过程时,我想向用户显示一条通知消息。如何在客户端实现此功能?
编辑 :
我不想在用户打开数据输入页面并离开时显示消息,如果用户添加或编辑了任何字段的数据,则只需要显示消息。
感谢你的帮助。
我有一个用于数据输入的 asp.net 页面,当用户从页面移出而不执行保存过程时,我想向用户显示一条通知消息。如何在客户端实现此功能?
编辑 :
我不想在用户打开数据输入页面并离开时显示消息,如果用户添加或编辑了任何字段的数据,则只需要显示消息。
感谢你的帮助。
除了我的其他答案,您可以使用 JavaScript 来调用事件:
<body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()">
<script>
var myclose = false;
function ConfirmClose()
{
if (event.clientY < 0)
{
event.returnValue = 'You have closed the browser. Do you want to logout from your application?';
setTimeout('myclose=false',10);
myclose=true;
}
}
function HandleOnClose()
{
if (myclose==true)
{
//the url of your logout page which invalidate session on logout
location.replace('/contextpath/j_spring_security_logout') ;
}
}
</script>
感谢如何使用 ASP.NET 检测页面关闭事件-> 可能想要阅读它,因为它还有其他建议/提示和技巧。
当用户离开页面时,会自动调用 OnUnload 事件。
请参见此处:asp.net 中的页面卸载事件
类似的东西
protected override void OnUnload(EventArgs e)
{
base.OnUnload(e);
if(!userSaved) { //e.g. user has not saved
//display error
}
}
对于客户端解决方案,您可以使用document.onbeforeunload
此处记录的:https ://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload
另一个页面有一个示例代码:
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "\o/";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Webkit, Safari, Chrome etc.
});
当然,您可能希望在提醒用户之前跟踪是否有真正的变化。