问题描述
在卸载页面之前,我需要先征求用户的确认。如果我在JS中执行此操作,它将起作用:
window.onbeforeunload = function () { //close confirm
return '';
}
function sth()
{
window.addEventListener('beforeunload',closeConfirm,false);
}
function closeConfirm()
{
return '';
}
有人可以告诉我区别吗?在纯JS中在函数外部注册事件后,删除也无法在函数中进行。 sth()通过按下按钮来调用。我需要在登录时启用此事件监听器,并在注销或超时时将其删除,但是我不能使其与函数调用一起使用,而仅在页面加载时起作用。
---刷新--- 例: https://jsfiddle.net/6mvuet1h/1/
如果您注释掉2-4行,则无法正常工作。
解决方法
所以我正在编辑我的答案,因为我以前误解了你的问题。
在beforeundload mdn page上我们可以读到某些浏览器(包括Chrome)需要设置event.returnValue
。其他一些浏览器需要调用event.preventDefault()
。因此,您的closeConfirm
函数应如下所示:
function closeConfirm(event)
{
event.preventDefault();
event.returnValue = '';
return '';
}