在卸载页面之前,我需要询问用户的确认。如果我在JS中这样做,它可以工作:
window.onbeforeunload = function () { //close confirm
return '';
}但是当我把它放到一个函数中以使其更灵活时,我似乎没有注册:
function sth()
{
window.addEventListener('beforeunload', closeConfirm, false);
}
function closeConfirm()
{
return '';
}有没有人能告诉我有什么不同?在普通JS中的函数外部注册了事件之后,移除在函数中也不起作用。通过按一个按钮来调用sth()。我需要在登录时启用这个eventlistener,并在注销或超时时删除它,但我不能让它在函数调用中工作,而是在页面加载时工作。
-刷新-示例:https://jsfiddle.net/6mvuet1h/1/
如果您注释掉2-4行,这是不起作用的。
发布于 2020-08-22 04:55:48
所以我在编辑我的答案,因为我之前误解了你的问题。
在beforeundload mdn page上,我们可以看到一些浏览器(包括chrome)需要设置event.returnValue。其他一些浏览器需要调用event.preventDefault()。因此,您的closeConfirm函数应该如下所示:
function closeConfirm(event)
{
event.preventDefault();
event.returnValue = '';
return '';
}https://stackoverflow.com/questions/63525940
复制相似问题