MooTools中的滚动事件中没有事件对象?

时间:2014-06-03 13:11:22

标签: javascript events scroll mootools

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

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

我测试了将回调附加到click事件的相同代码,在这种情况下,事件变量已按照您的想象定义。我在这里错过了什么?我的最终目标是停止滚动的正常效果,即阻止滚动,这样我就可以使用Fx.Scroll以简易功能滚动...

1 个答案:

答案 0 :(得分:2)

如果你做得对,它会起作用,但它不能通过事件,因为它不可取消。

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,或者它更高效。例如,后两者经常被解雇。