beforeunload on IE 11 - 不提示用户不起作用
beforeunload on IE 11 - do not prompt user does not work
为 beforeunload
事件向全局 window 对象添加侦听器时,IE 11(和 10)的行为与 Chrome 和 Firefox 不同。
通常,您 return 一个将用于填充浏览器本机对话框提示的字符串,或者如果您不希望对话框提示用户,您 return 一个空字符串。
但是,在 IE 11 中,如果您 return 空字符串 and/or 将 evt.returnValue
设置为空字符串,则会打开浏览器本机 'Navigate Away' 对话框并提示用户确认他们可能会丢失未保存的更改。
是否有任何方法(无需删除事件侦听器)让对话框不出现在 IE 11 中?
查看我的 JSFiddle(在 IE 中 - 因为它应该在 Chrome、Firefox 和 Safari 中正常工作)。
这是 fiddle 中的来源:
var isDirty = false;
var message = '** You have unsaved changes. **'
window.addEventListener('beforeunload', function(evt){
if(isDirty) {
evt.returnValue = message;
return message;
}
delete evt.returnValue;
return "";
});
解决方案不是 return 任何东西(与 return;
或 return undefined;
相同)。
var isDirty = false;
var message = '** You have unsaved changes. **'
window.addEventListener('beforeunload', function(evt){
if(isDirty) {
evt.returnValue = message;
return message;
}
delete evt.returnValue;
});
为 beforeunload
事件向全局 window 对象添加侦听器时,IE 11(和 10)的行为与 Chrome 和 Firefox 不同。
通常,您 return 一个将用于填充浏览器本机对话框提示的字符串,或者如果您不希望对话框提示用户,您 return 一个空字符串。
但是,在 IE 11 中,如果您 return 空字符串 and/or 将 evt.returnValue
设置为空字符串,则会打开浏览器本机 'Navigate Away' 对话框并提示用户确认他们可能会丢失未保存的更改。
是否有任何方法(无需删除事件侦听器)让对话框不出现在 IE 11 中?
查看我的 JSFiddle(在 IE 中 - 因为它应该在 Chrome、Firefox 和 Safari 中正常工作)。
这是 fiddle 中的来源:
var isDirty = false;
var message = '** You have unsaved changes. **'
window.addEventListener('beforeunload', function(evt){
if(isDirty) {
evt.returnValue = message;
return message;
}
delete evt.returnValue;
return "";
});
解决方案不是 return 任何东西(与 return;
或 return undefined;
相同)。
var isDirty = false;
var message = '** You have unsaved changes. **'
window.addEventListener('beforeunload', function(evt){
if(isDirty) {
evt.returnValue = message;
return message;
}
delete evt.returnValue;
});