JS 如何检测浏览器窗口是否正要关闭


当浏览器窗口关闭或者刷新时,会触发 beforeunload 事件, 它一般用于提醒用户在关闭网页时可能还有未完成的操作,比如更改的信息未保存。

示例

用户在尝试关闭网页时显示的提示消息:


            window.addEventListener('beforeunload', (e) => {
                e.preventDefault()
                return (e.returnValue = '修改的内容未保存,确定要关闭吗?')
            })
        

代码说明

根据规范,要显示确认对话框,beforeunload 事件的回调函数里需要调用一次 preventDefault(),尽管不是每个浏览器都需要这样,但还是建议加上。

还要注意,如果用户与网页没有过任何的交互,某些浏览器可能不会触发 beforeunload 事件,这是为了防止某些恶意网页弹出不必要的弹窗。

并且,在 beforeunload 事件中调用 window.alert()window.confirm()window.prompt()方法可能会失效。


back home