如何在函数中使用事件监听器?
How to use eventlisteners in functions?
我需要在卸载页面之前征得用户的确认。如果我在 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 '';
}
我需要在卸载页面之前征得用户的确认。如果我在 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 '';
}