例如,如果您具有下面的代码,则当mousemove不发生时,mouseupmousedown事件是否会被破坏?

var el = document.getElementById('mydiv');
el.addEvenListener('mousedown', function(event){
  initializeStuff();

  document.onmousemove = function(event) {
    event = event || window.event;
    showDragAnimation();
  };

  doucment.onmouseup = function() {
    showFinalPosition();
  };

}, false);

最佳答案

不,它们不会被破坏-不知道mousedown是“未发生”。由于JS不能并发运行,所以这毫无意义。

如果您的代码确实使用了addEventListener,则将严重泄漏事件处理程序,并且您的应用程序将变得很脚(每次单击都会得到更多响应)。只有您使用的是旧的on…属性来覆盖以前的侦听器这一事实,才可以避免这种命运。

您将要使用

function onmousedown(event) {
    this.addEventListener("mousemove", onmousemove, false);
    this.addEventListener("mouseup", onmouseup, false);
    initializeStuff();
}
function onmousemove(event) {
    showDragAnimation();
}
function onmouseup(event) {
    this.removeEventListener("mousemove", onmousemove);
    this.removeEventListener("mouseup", onmouseup);
    showFinalPosition();
}

document.getElementById('mydiv').addEvenListener('mousedown', onmousedown, false);

关于javascript - 家长事件结束后, child 听众会被销毁吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28681601/

10-13 02:26