在IE 11上加载之前-不提示用户不工作

beforeunload on IE 11 - do not prompt user does not work

本文关键字:提示 用户 工作 IE 加载      更新时间:2023-09-26

将侦听器添加到beforeunload事件的全局窗口对象时,IE 11(和10)的行为与Chrome和Firefox不同。

通常,您会返回一个用于填充浏览器本机对话框提示的字符串,如果不希望对话框提示用户,则返回一个空字符串。

但是,在IE 11中,如果返回空字符串和/或将evt.returnValue设置为空字符串,则会打开浏览器本机的"导航离开"对话框,并提示用户确认可能会丢失未保存的更改。

是否有任何方法(不必删除事件侦听器)使对话框不出现在IE 11中?

请参阅我的JSFiddle(在IE中,因为它应该在Chrome、Firefox和Safari中正常工作)。

这是小提琴的来源:

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 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;
});