mousewheel插件无法在Firefox中运行

时间:2012-09-18 00:08:34

标签: jquery mousewheel

我一直在使用brandon aarons mousewheel插件并且正在使用webkit浏览器,但是它在Firefox上不起作用。

这是brandon aaron的原始代码,它在webkit上很棒

$('body').on('mousewheel', function(event, delta){
  this.scrollLeft -= (delta*30);
  event.preventDefault();
});

所以我切换到http://cobbweb.me/blog/2012/03/30/jquery-mousewheel-plugin-version-2/ 应该在firefox上运行,尝试了这个代码

$('body').on('mousewheel', function(event, delta, deltaX, deltaY){

  event.preventDefault();
}); 

我试图将scrollLeft放在那里,替换deltaY和DOMMouseScroll或MozMousePixelScroll,但仍无济于事。如何使这个工作在鼠标滚轮上绑定,以便我的页面在firefox上水平滚动?

谢谢!

3 个答案:

答案 0 :(得分:1)

您应该查看scrollLeft on body not working in firefox

他们通过将$('body')...更改为$('html, body')...

来解决此问题

答案 1 :(得分:0)

您可以通过自己处理DOM事件(使用而不使用插件)来解决此问题。

像这样:

$('body').on('mousewheel DOMMouseScroll MozMousePixelScroll', function(event, delta, deltaX, deltaY){
    event.preventDefault();
});

您可以在行动here中看到它(在Chrome和Firefox中测试过)。

但是,scrollLeftscrollTop似乎不适用于Firefox(在jQuery或基本JavaScript中)。请参阅this fiddle(应输出“5”;在Chrome上执行此操作,但在Firefox上吐出“0”。

答案 2 :(得分:0)

尝试:(1)事件' mousewheel',(2)函数(事件),以及(3)使用event.deltaFactor * event.deltaX来检测滚动距离。

检查https://github.com/jquery/jquery-mousewheel,非常短的部分"获取滚动距离"。