的Internet Explorer:使用addEventListener
在IE9和IE10你必須使用onwheel
事件(不是onmousewheel,也不DOMMouseScroll),以便能夠從DOM檢測水平滾輪滾動。使用event.deltaX
值和event.deltaMode
值來檢測水平鼠標滾輪(對於垂直滾輪使用event.deltaY
值)。對於< = IE8使用onmousewheel
事件和event.wheelDelta
(僅適用於舊IE版本的yaxis鼠標輪)。
Blink/Webkit:支持自Chrome 31/Safari 7以來的onwheel事件。否則使用onmousewheel
事件和event.wheelDeltaX
和event.wheelDeltaY
屬性。 Chrome/Safari的唯一訣竅:在鼠標滾動向左/向右滾動時使用SHIFT鍵(用於測試)。
Firefox:Firefox 17及更高版本support the onwheel event。要支持舊版本的Firefox(回到3.6),請使用現在已棄用的DOMMouseScroll
以及event.axis和event.detail屬性來支持水平滾動。 (Firefox移動版:文檔暗示使用觸摸設備進行平移時,onwheel事件會觸發,但我沒有嘗試過)。 Firefox也有一個MozMousePixelScroll
事件。 MDN文檔還提供了建議的代碼來處理跨瀏覽器的不同事件。 Firefox也有一個mousewheel.enable_pixel_scrolling配置,可能會影響所有不同的輪子事件。
Try the onwheel event out yourself使用來自QuirksMode的車輪事件測試器。我可以看到這個工作在Win7上使用IE9,在Windows 8上使用IE10(發佈預覽版,IE版本10.0.8400.0)。設置新的標準輪循事件:
- 選擇addEventListener(capture)radio。
- 不可滾動滾動。
- 解開鼠標滾輪。
- 讓車輪打勾。
- 勾選右列底部的顯示事件屬性。
- 使用F12並確認文檔處於documentMode IE9標準或IE10標準。
- 做一些鼠標在中心列上滾動,看到輪盤事件記錄在左欄,輪子事件詳細信息顯示在右欄底部。
- 有時你可能需要取消選中並retick輪事件複選框以獲取事件(不知道爲什麼:也許錯誤在怪異模式頁面或IE?)
的W3C specification,該Microsoft IE9 documentation for the MouseWheel
event和MDN docs指定onwheel
事件:
deltaX
- 獲取鼠標滾輪已經繞x軸(水平)而旋轉的距離。
deltaY
- 獲取鼠標滾輪圍繞y軸旋轉的距離(垂直)。
deltaZ
- 獲取鼠標滾輪圍繞z軸旋轉的距離。
deltaMode
- 獲取一個值,指示測量單位爲增量值:
DOM_DELTA_PIXEL
(0×00)默認值。增量以像素爲單位進行衡量。
DOM_DELTA_LINE
(0x01)增量以文本行進行度量。
DOM_DELTA_PAGE
(0x02)增量以文本頁面爲單位進行測量。
編輯:確保你不preventDefault()方法的情況下,如果event.ctrlKey
設置,否則你可能會阻止頁面縮放。顯然,如果你在Chrome和IE的觸摸板上使用捏縮放,ctrlKey設置爲true。
特徵檢測很難在IE:
- 在IE10與IE8 documentMode,
'onwheel' in document
返回true,但似乎沒有事件進行水平或垂直onwheel觸發的事件。
- 在IE9中
'onwheel' in document
返回false但onwheel事件起作用(我猜應該在使用IE9中的onwheel事件之前檢查document.documentMode === 9
)。
- 在IE9和IE10中,傳統的
document.onwheel = 'somefunc(event)'
在documentMode 9或10中似乎不起作用(即看起來像只能使用addEventListener)。
要進行測試,請使用微軟的tiltwheel鼠標,滾動觸摸板(手勢或區域)或Apple設備(魔術鼠標或強大的鼠標滾動球)。在Windows中使用各種鼠標或觸控板設置進行播放(或者如果使用Safari在OSX上測試水平滾動,請在OSX上使用鼠標偏好設置)。
delta值的符號對於所有瀏覽器的onwheel和onmousewheel都有相反的符號。在IE中δ值,例如(使用我的dev機IE9具有非常標準的Microsoft鼠標)是用於onwheel onMouseUp和onMouseWheel不同:
你想知道'鼠標'或'鼠標滾輪'是向左還是向右?並非所有鼠標滾輪都左右移動。 – aglassman
@aglassman好問題。只是鼠標滾輪。 –
@bob_cobb,你可能想重新審視你的批准答案,以[最投人最豐富的細節之一](http://stackoverflow.com/a/12850780/1712065)。這有助於未來的訪問者找到正確的信息,並向你展示你甚至關心社區! – Annie