我知道这是可以检测上下例如
function handle(delta) {
if (delta < 0) {
alert('down');
} else {
alert('up');
}
}
function wheel(event){
var delta = 0;
if (!event) event = window.event;
if (event.wheelDelta) {
delta = event.wheelDelta/120;
} else if (event.detail) {
delta = -event.detail/3;
}
if (delta)
handle(delta);
if (event.preventDefault)
event.preventDefault();
event.returnValue = false;
}
/* Initialization code. */
if (window.addEventListener)
window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;
但有一种方式,如果用户的老鼠就向左或向右鼠标滚轮来检测?
Internet Explorer中 :在IE9中,并IE10你必须使用onwheel
事件(不是onmousewheel,也不DOMMouseScroll)使用addEventListener
能够从DOM检测水平滚轮滚动。 使用event.deltaX
值与沿着event.deltaMode
值来检测水平鼠标续流(对于垂直续流使用event.deltaY
值)。 为<= IE8使用onmousewheel
事件和event.wheelDelta
(仅Y轴鼠标续流支持较旧版本的IE)。
眨眼/ Webkit的 :因为铬31/7的Safari为onwheel事件支持。 否则,使用onmousewheel
事件和event.wheelDeltaX
和event.wheelDeltaY
性能。 镀铬/ Safari浏览器只招:使用Shift键的同时滚动mousewheeling左/右(用于测试)。
火狐 :火狐17和更高的支持onwheel事件 。 为了支持老版本的Firefox(回3.6)的使用现在已经过时, DOMMouseScroll
和event.axis和event.detail属性,以支持水平滚动。 (火狐移动:将文档暗示使用触摸设备平移时onwheel事件将触发我还没有尝试过)。 火狐也有MozMousePixelScroll
事件。 该MDN文档还给出了建议的代码来处理跨浏览器的不同的事件。 火狐也有mousewheel.enable_pixel_scrolling配置可能会影响所有不同的轮事件。
尝试自己onwheel事件使用从怪异模式车轮的事件测试。 我可以看到这方面的工作Win7上使用IE9,IE10和Windows 8上的(发行预览版,IE版本10.0.8400.0)。 要设置新标准onwheel事件:
- 选择的addEventListener(捕获)无线电。
- 取消选中滚动。
- 取消选中鼠标滚轮。
- 离开轮选中。
- 在右列的底部勾选显示事件属性。
- 使用F12,并确认该文件是在documentMode IE9标准或IE10标准。
- 请在中心柱的一些鼠标旋转着,看到车轮事件被记录在左边的列,轮事件的详细信息显示在右列的底部。
- 有时你可能需要取消选中并retick轮事件复选框以获取事件(不知道为什么?也许错误在怪异模式页面或IE)
在W3C规范中, 微软IE9文档中的MouseWheel
事件和MDN文档指定onwheel
事件:
-
deltaX
-获取鼠标滚轮已经绕x轴(水平)而旋转的距离。 -
deltaY
-获取鼠标滚轮已绕y轴(垂直)转动的距离。 -
deltaZ
-获取鼠标滚轮已经绕z轴旋转的距离。 -
deltaMode
-获取一个值,指示测量增量值的单元: -
DOM_DELTA_PIXEL
(0×00)默认。 增量以像素计量。 -
DOM_DELTA_LINE
(0×01)的差是在文本行测量。 -
DOM_DELTA_PAGE
(0×02)的差是在文本的页面测量。
编辑:请确保你不preventDefault()方法的情况下,如果event.ctrlKey
设置,否则你可能会阻止页面缩放。 显然也如果您在Chrome和IE触摸板使用捏缩放与ctrlKey设置为true。
特征检测是困难的IE:
- 在IE10与IE8 documentMode,
'onwheel' in document
返回true,但似乎没有事件进行水平或垂直onwheel触发的事件。 - 在IE9
'onwheel' in document
返回false但onwheel事件的工作(我猜document.documentMode === 9
应在IE9使用onwheel事件之前进行检查)。 - 在IE9和IE10传统
document.onwheel = 'somefunc(event)'
似乎并不甚至在documentMode 9或10工作(即看起来像你只能使用的addEventListener)。
为了测试,使用Microsoft tiltwheel鼠标,滚动触控板(手势或区域),或苹果设备(魔术鼠标或Mighty Mouse鼠标scrollball)。 各种鼠标或触摸板设置在播放窗口(或鼠标的喜好在OSX如果使用Safari的OSX测试水平滚动条)。
增量值的符号有onwheel onMouseUp和onMouseWheel对于所有浏览器的符号相反。 在IE中δ值,例如(使用我的dev机IE9具有非常标准的Microsoft鼠标)是用于onwheel onMouseUp和onMouseWheel不同:
我相信你可以找到的“水平”或x轴数据
event.originalEvent.wheelDeltaX
你应该调试代码,并看到事件对象具有在运行什么样的属性。 这应该确认或者如果该属性存在否认。 从那里,它仅仅是一个如果所述值不同检测物质。
检查更多的链接和信息接受的答案。
冒泡滚动/鼠标滚轮事件
event.detail指定“滴答”鼠标滚轮移动的数目。
正值表示向下/右”,负上/左。
event.axis指定滚动手势(水平或垂直)的轴线。 在Firefox 3.5中添加了此属性
Chrome浏览器实现了相同的行为IE AFAIK。 在IE和Chrome:使用e.wheelDeltaX和e.wheelDeltaY
IE浏览器支持所有的人: 鼠标滚轮| onmousewheel其是事件处理程序以及WheelEvent (提供DeltaX
, DeltaY
, DeltaZ
),这是标准的事件和MouseWheelEvent
接口 ,其也支持在IE9 +(与WheelDelta
和其他的数x
, y
坐标相关的属性)。
测试在IE11。
相关:当触摸事件标准终于得到正式的今天,竟然IE11已经支持大部分: http://blogs.msdn.com/b/ie/archive/2015/02/24/pointer-events-w3c-recommendation -interoperable-触摸和去除最可怕-300ms的抽头-delay.aspx 。
旁白:@bob_cobb,你可能想重温你的答案批准赞成的多数投票支持最丰富的一个细节 。 这有助于未来的访客找到正确的信息,并显示出你甚至关心社区!