返回

修改内容未保存浏览器关闭确认

前端

介绍

当用户在浏览器中编辑内容时,如果关闭浏览器而不保存,浏览器将弹出提示对话框,询问用户是否要保存更改。

onbeforeunload 事件

onbeforeunload 事件在窗口即将被卸载(关闭)时触发。此时页面文档依然可见,且该事件的默认动作可以被取消。另外页面刷新和切换也会触发 onbeforeunload 事件。

window.addEventListener('beforeunload', function(e) {
  // 如果用户修改了内容,则显示提示对话框
  if (document.body.classList.contains('has-unsaved-changes')) {
    e.preventDefault();
    e.returnValue = '';
    var dialog = document.createElement('dialog');
    dialog.innerHTML = `
      <form>
        <p>您对以下内容进行了修改:</p>
        <ul>
          <li>...</li>
          <li>...</li>
          <li>...</li>
        </ul>
        <p>您是否要保存更改?</p>
        <button type="submit">保存</button>
        <button type="button" onclick="dialog.close()">取消</button>
      </form>
    `;
    document.body.appendChild(dialog);
    dialog.showModal();

    dialog.querySelector('form').addEventListener('submit', function(e) {
      e.preventDefault();
      // 保存更改
      ...

      // 关闭对话框
      dialog.close();
    });
  }
});

确定对话框

确定对话框是一个弹出窗口,其中包含一条消息和两个按钮:“确定”和“取消”。当用户单击“确定”按钮时,将执行相应的操作;当用户单击“取消”按钮时,将关闭对话框且不会执行任何操作。

保存按钮

保存按钮是一个按钮,当用户单击该按钮时,将保存对文档所做的更改。

取消按钮

取消按钮是一个按钮,当用户单击该按钮时,将关闭对话框且不会执行任何操作。

总结

在本文中,我们讨论了如何使用 JavaScript 来实现浏览器关闭确认功能。我们介绍了 onbeforeunload 事件、确定对话框、保存按钮和取消按钮。希望这些知识对您有所帮助。