在MooTools的滚动事件上没有事件对象

No Event object on Scroll Event in MooTools?

本文关键字:事件 对象 滚动 MooTools      更新时间:2023-09-26

我正在为事件对象获得一个未定义的值,我认为应该在addEvent()函数的回调中可用。这就是我正在做的。

element.addEvent('scroll', callback(event) {
  console.log(event);
});
// on scroll, event is 'undefined'

我测试了相同的代码,将回调附加到click事件,在这种情况下,事件变量被定义为您想象的那样。我遗漏了什么?我的最终目标是停止滚动的正常效果,即防止滚动,这样我就可以使用Fx.Scroll的轻松功能滚动……

如果你做得对,它会工作,但它不会传递事件,因为它是不可取消的。

callback(event)没有意义,除非它返回一个可以在滚动时运行的函数-否则,它将抛出由于块作用域之后,它将被视为对象字面值....

http://jsfiddle.net/dimitar/V8fht/

在元素上滚动:

document.getElement('div').addEvent('scroll', function(event) {
  console.log('div scroll');
});

div {
    height: 300px;
    overflow-y: scroll;
}

触发文档滚动:

document.addEvent('scroll', function(event) {
  console.log('scroll document', this); // document
});

你可以试试本地的

document.addEventListener('scroll', function(event) {
    event.stopPropagation();
    event.preventDefault();
    console.log(event);
    return false;
});

…它不会停止滚动,所以事件只是一个标记,真的。

核心开发者@kentaromiura说:

此行为是已知的,并记录在这里:http://mootools.net/docs/core/Element/Element.Event#Element-NativeEvents

区分1和2的原因是1通常用于没有有趣数据的事件,例如:onload, onscroll和onresize,或者它的性能更高。例如,后两者经常被触发。