Element: mousewheel 事件

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

当鼠标滚轮或类似设备操作时,异步触发的已废弃非标准mousewheel 事件会向 Element 提供更新。mousewheel 事件从未成为任何标准的一部分,尽管它被一些浏览器实现,但从未被 Firefox 实现。

注意: 请使用标准的 wheel 事件来代替这个已废弃的事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("mousewheel", (event) => { })

onmousewheel = (event) => { }

事件类型

一个 WheelEvent。继承自 MouseEventUIEventEvent

Event UIEvent MouseEvent WheelEvent

事件属性

此接口继承了其祖先 MouseEventUIEventEvent 的属性。

WheelEvent.deltaX 只读

返回一个表示水平滚动量的 double 值。

WheelEvent.deltaY 只读

返回一个表示垂直滚动量的 double 值。

WheelEvent.deltaZ 只读

返回一个表示 z 轴滚动量的 double 值。

WheelEvent.deltaMode 只读

返回一个 unsigned long,表示 delta* 值的滚动量单位。允许的值有:

常量 描述
WheelEvent.DOM_DELTA_PIXEL 0x00 delta* 值以像素为单位。
WheelEvent.DOM_DELTA_LINE 0x01 delta* 值以行为单位。每次鼠标点击滚动一行内容,计算行高的方法取决于浏览器。
WheelEvent.DOM_DELTA_PAGE 0x02 delta* 值以页为单位。每次鼠标点击滚动一页内容。
WheelEvent.wheelDelta 只读 已废弃

返回一个表示像素距离的整数(32 位)。

WheelEvent.wheelDeltaX 只读 已废弃

返回一个表示水平滚动量的整数。

WheelEvent.wheelDeltaY 只读 已废弃

返回一个表示垂直滚动量的整数。

detail 属性

detail 属性的值始终为零,除了 Opera,它使用 detail 的方式与仅 Firefox 支持的 DOMMouseScroll 事件的 detail 值类似,后者表示以行表示的滚动距离,负值表示滚动方向朝向底部或右侧,正值表示滚动方向朝向顶部或左侧。

注意: 在 macOS 上,滚动距离(以及因此 detail 的值)是根据加速滚动距离计算的。

在 Linux 上,每个原生滚轮事件都会设置为 2-2

wheelDelta、wheelDeltaX 和 wheelDeltaY 值

wheelDelta 属性值是一个抽象值,表示滚轮转动的距离。如果滚轮向远离用户的方向转动,则为正值;否则为负值。这意味着 delta 值的符号与 DOM Level 3 Event 的 wheel 不同。然而,这些值的数量意义在不同浏览器之间并不相同。请参阅以下详细说明。

IE 和 Opera (Presto) 只支持 wheelDelta 属性,而支持水平滚动。

wheelDeltaX 属性值表示沿水平轴的 wheelDelta 属性值。当用户操作设备向右滚动时,该值为负。否则,即向左滚动时,该值为正。

wheelDeltaY 属性值表示沿垂直轴的 wheelDelta 属性值。该值的符号与 wheelDelta 属性值的符号相同。

Chrome

在 Windows 上,该值与 WM_MOUSEWHEELWM_MOUSEHWHEEL 的 delta 值相同。而且,即使系统设置的滚动量是页面滚动,该值也不会改变,即该值与 Windows 上的 IE 相同。

在 Linux 上,每个原生滚轮事件的值为 120-120。这使得行为与 Windows 上的 IE 和 Chrome 相同。

在 Mac 上,该值很复杂。如果导致原生滚轮事件的设备支持连续滚动,该值会发生变化。

如果设备支持连续滚动(例如 MacBook 的触控板或可以平滑转动的鼠标滚轮),则该值是根据加速滚动量计算的。在这种情况下,该值与 Safari 相同。

如果设备支持连续滚动(通常是不能平滑转动的旧鼠标滚轮),则该值是根据非加速滚动量(每档 120)计算的。在这种情况下,该值与 Safari 不同。

这种差异给 Web 应用程序开发人员带来了严重的问题。也就是说,Web 开发人员无法知道 mousewheel 事件是由哪个设备引起的。

Safari

该值总是根据加速滚动量计算的。这与其他浏览器(除了支持连续滚动的 Chrome)完全不同。

Opera (Presto)

该值始终是 detail 属性值 ✕ 40

在 Windows 上,由于 detail 属性值是根据实际滚动量计算的,因此该值与其他浏览器不同,除非系统设置中每档滚动量为 3 行或一页。

在 Linux 上,每个原生滚轮事件的值为 80-80。这与其他浏览器不同。

在 Mac 上,detail 属性值是根据原生事件的加速滚动量计算的。该值通常远大于 Safari 或 Chrome 的值。

规范

不属于任何规范。

浏览器兼容性

另见

  • 应使用标准的 wheel 事件来监听。