如何删除事件侦听器

How to remove event listener?

本文关键字:事件 侦听器 删除 何删除      更新时间:2023-09-26

下面是我的事件侦听器代码

window.addEventListener("beforeunload", function (e) {
        if(sessionStorage.token != "abide" )  {
          // call api
        }
});

如果我想删除此事件侦听器,该怎么办?

代码是否像下面这样工作??

window.removeEventListener("before unload");

若要删除事件侦听器事件处理程序函数必须是外部命名函数,而不是匿名函数(您需要对该函数的引用):

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);
});
<button id="button">click</button>