以下是我的事件监听器代码
window.addEventListener("beforeunload", function (e) {
if(sessionStorage.token != "abide" ) {
// call api
}
});
如果我想删除此事件监听器该怎么办?
代码是否正常工作?
window.removeEventListener("before unload");
答案 0 :(得分:12)
要删除事件侦听器,您的事件处理函数必须是外部命名函数,而不是匿名(您需要对其进行引用)功能):
window.addEventListener("beforeunload", functionToRun);
function functionToRun(e){
if(sessionStorage.token != "abide" ){
// call api
}
}
window.removeEventListener("beforeunload",functionToRun);
<小时/> 备用:您也可以使用引用该匿名函数的 arguments.callee 在匿名函数调用中删除它。
var button=document.getElementById('button');
button.addEventListener('click',function(e){
//some code to be runned
this.removeEventListener('click', arguments.callee);
});
注意:您的事件处理函数必须被触发一次,以便以上述方式将其删除。
var button = document.getElementById('button');
button.addEventListener('click', function(e) {
alert('clicked');
this.removeEventListener('click', arguments.callee);
});
&#13;
<button id="button">click</button>
&#13;