我正在使用asp.net,如果他们对网页进行了更改,我需要向用户显示提示,并且他们不小心关闭了浏览器。
该页面可以是“编辑个人资料”到“提交索赔”等任何内容。
如何显示消息框,确保仅在进行了更改时显示消息框(而不是用户进行更改,然后撤消更改,并关闭浏览器)
答案 0 :(得分:1)
如果不理解页面上的内容,甚至很难触摸。如果它是一些控件,您可以在页面加载时捕获值并存储它们,以便稍后进行比较。如果它是一个复杂的页面,您需要与整个视图状态进行精确比较。
通常,您可以通过在第一次进行任何更改时将布尔值设置为TRUE来处理此类情况,并忽略用户将其更改回来。如果您只是试图避免意外不保存数据,那么用户应该足够聪明,知道他们“撤消”了他们的更改。
答案 1 :(得分:1)
我过去所做的是使用一些客户端脚本,在onbeforeunload事件期间执行此检查....
var showPrompt=true;
var isDirty=false;
var hidePopup=false;
function onBeforeUnload() {
if (showPrompt) {
if (isDirty) {
if (hidePopup || confirm("Click ok to save your changes or click cancel to discard your changes.")) {
doSave();
}
}
}
showPrompt = true;
hidePopup = false;
}
<a onclick='showPrompt=false' href='javascript:doX()'/>
$("input").onchange(function(){isDirty=true;});
的操作。要跟踪撤消,您可能需要使用一个函数来替换isDirty,该函数会检查上次保存状态的当前状态。答案 2 :(得分:1)
您可以使用javascript执行此操作。请参阅this question以及前两个答案中的任何一个。