一旦函数继续执行

Once function keeps executing

我写了一个事件侦听器函数,但它一直像往常一样执行事件侦听器而不是一次here是工作代码,在我写的函数下面

window.once=function(event,cb){
  function ccb(e){
    event=e||window.event;
    if(event){
      cb(event);
      this.removeEventListener(event,ccb);
    }
  }
  this.addEventListener(event,ccb);
}

window.Element.prototype.once=function(event,cb){
  function ccb(e){
    event=e||window.event;
    if(event){
      cb(event);
      this.removeEventListener(event,ccb);
    }
  }
  this.addEventListener(event,ccb);
}

您遇到此问题是因为您试图删除 MouseEvent 事件,而不是 MouseEvent。要澄清这一点,试试这个:

....
function ccb(e){
    event=e||window.event;
    if(event){
       console.log(event);
    }
}
....

记录事件 MouseEvent 本身,而

window.once=function(event,cb){
    function ccb(e){
       ....
    }
    console.log(event)
    this.addEventListener(event,ccb);
}

记录字符串 Click

解决方案是从您的鼠标事件中访问密钥 type,例如

window.once=function(event,cb){
    function ccb(e){
        event=e||window.event;
        if(event){
            cb(event);
            this.removeEventListener(event.type,ccb);
       }
    }
    this.addEventListener(event,ccb);
}