我已在javascript中设置:
var onBeforeUnloadFired = false;
window.onbeforeunload = function (sender, args)
{
if(window.event){
if(!onBeforeUnloadFired) {
onBeforeUnloadFired = true;
window.event.returnValue = 'You will lose any unsaved changes!'; //IE
}
}
else {
return 'You will lose any unsaved changes!'; //FX
}
windows.setTimeout("ResetOnBeforeUnloadFired()", 1000);
}
function ResetOnBeforeUnloadFired() {
//Need this variable to prevent IE firing twice.
onBeforeUnloadFired = false;
}
我正在尝试创建一个编辑屏幕,用户在导航之前会收到警告。它工作正常,除了我弹出正常的按钮点击后退。我希望避免这种情况,所以我想知道是否可以确定按下哪个按钮会起作用。
有人知道如何确定在windows.onbeforeunload中按下了哪个按钮吗?
或者,任何人都知道我想要实现的更好的方法吗?
答案 0 :(得分:2)
通过将所有编辑项目TextBoxes等放入更新面板来解决此问题。
现在windows.onbeforeunload只会触发此外部的组件。
答案 1 :(得分:2)
另一种方法,如果你不能“控制”你控制的深度,那就是在某种程度上标记“好的控制”,那就是那些不应该触发离开导航逻辑的方法。 设置全局javascript变量(例如
)很容易实现var isGoodLink=false;
window.onbeforeunload = function (e) {
var message = "Whatever";
e = e || window.event;
if (!isGoodLink) {
// For IE and Firefox
if (e) {
e.returnValue = message;
}
// For Safari
return message;
}
};
function setGoodLink() {
isGoodLink=true;
}
并在要保持安全的事件上添加setGoodLink函数:
<button type="button" onclick="javascript:setGoodLink() ">I am a good button!</button>