W tej chwili Firefox definiuje zdarzenia DOMMouseScroll i koła. Chrome, Opera i IE (najnowsze, ponownie!) określają kółko myszy.
To jak to zrobiłem:
if(window.onwheel !== undefined) {
window.addEventListener('wheel', onMouseWheel)
} else if(window.onmousewheel !== undefined) {
window.addEventListener('mousewheel', onMouseWheel)
} else {
// unsupported browser
}
Należy pamiętać, że wsparcie addEventListener w starszych wersjach IE potrzebuje PolyFill. Alternatywnie możesz użyć starego window.mousewheel = function() {} lub jakiejkolwiek innej metody.
Jak widać, detektor zdarzeń jest dołączony do obiektu okna. Nie można go dołączyć do elementów, w sposób między przeglądarkami. Możesz użyć właściwości target obiektu zdarzenia, aby zobaczyć, gdzie została wywołana, i zrobić filtr na tej podstawie.
PS: Jeszcze jedna uwaga w różnych przeglądarkach: W IE trzeba użyć właściwości "wheelDelta" (i odwrócić ten znak!) Wewnątrz obiektu zdarzenia podczas przetwarzania go w funkcji wywołania zwrotnego ("onMouseWheel"). Inne przeglądarki zapełnią "deltaY" (lub "deltaX" dla przewijania w poziomie).
Działa w przeglądarce Firefox i Chrome. ** Wersja demonstracyjna na żywo: ** http://jsfiddle.net/chtNP/1/ –
To nie zadziała zbyt dobrze w IE lub Operze, w zależności od wersji (zobacz http://www.adomas.org/javascript- kółko myszy /) – Kelvin
@ KelvinMackay Testowałem w IE9 i IE8, i to działa. –