javascript - beforeunload on IE 11 - 不提示用户不起作用

标签 javascript internet-explorer-11 onbeforeunload

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

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

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

有什么办法(无需删除事件监听器)让对话框不出现在 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 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;
});

关于javascript - beforeunload on IE 11 - 不提示用户不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34110931/

相关文章:

javascript - 在 onbeforeunload 中等待 promise

javascript - Web 表单错误 : Maximum Request Length Exceeded

javascript - 对 Ajax 请求执行两个成功处理程序

linux - 在 IE 11 上运行 Protractor 测试

css - 我如何修复 IE 图像和列 flexbox 错误?

javascript - 使用 onbeforeunload 确认时是否可以捕获用户的回答?

php - 带锁定的用户友好视频审查

javascript - pdf.js 回馈 "InvalidPDFException: Invalid Pdf Structure"

javascript - Extjs Tree 如何更改子元素的文本颜色?

css - IE11 中不显示 Circle Boarder