冒泡滚动/鼠标滚轮事件

时间:2011-05-31 23:47:44

标签: javascript html gwt mousewheel delta

我已经设置了我的应用程序/网站,以便在滚动面板顶部有一个绝对定位的画布元素,当滚动面板滚动时,我将偏移应用于画布,使其看起来像图像滚动(这允许我有巨大的帆布,没有巨大的帆布元素的开销)。问题是,当我的鼠标位于画布元素上时,滚轮不起作用,因为滚动事件不会冒泡。但是,在这种情况下,我需要冒泡才能使滚动条工作。

我正在使用GWT,所以我不想依赖jQuery解决方案(虽然纯粹的javascript解决方案可以),因为很难将两者混合使用。我可以捕捉鼠标滚轮事件,但主要问题是它似乎没有区分滚动(向上/向下)和车轮倾斜(左/右)。我尝试了eventGetShiftKey(),eventGetButton(),eventGetType()和其他一些方法,但所有这些方法都返回了相同的滚动和倾斜结果(向左倾斜=向上滚动,向右倾斜=向下滚动)。

似乎处理此问题的最佳方法是将实际事件冒泡到滚动面板(顺便说一下,它还包含包含绝对定位画布的父div),但我不确定这是否可能?

1 个答案:

答案 0 :(得分:6)

鼠标滚轮事件确实冒泡,区分向上/向下滚动使用event.wheelDeltaevent.detail属性。

  

event.wheelDelta 表示滚轮按钮旋转的距离,以120的倍数表示。正值表示滚轮按钮已旋转离开用户。负值表示滚轮按钮已朝向用户旋转。

  

event.detail 指定鼠标滚轮移动的“刻度”数。正值表示向下/向右,负向上/向左。
   event.axis 指定滚动动画的轴(水平或垂直)。此属性已在Firefox 3.5中添加

另请参阅此 article ,其中有一些关于规范化的内容。

相关问题