一旦功能继续执行

时间:2015-09-23 06:07:17

标签: javascript events listener addeventlistener

我编写了一个一次事件监听器函数但是它一直像往常一样执行事件监听器而不是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);
}

1 个答案:

答案 0 :(得分:1)

您遇到此问题是因为您尝试删除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

解决方法是从您的mouseevent访问密钥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);
}