返回
修改内容未保存浏览器关闭确认
前端
2023-12-08 11:28:10
介绍
当用户在浏览器中编辑内容时,如果关闭浏览器而不保存,浏览器将弹出提示对话框,询问用户是否要保存更改。
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 事件、确定对话框、保存按钮和取消按钮。希望这些知识对您有所帮助。