In questo momento, Firefox definisce DOMMouseScroll e gli eventi wheel. Chrome, Opera e IE (più recenti, ancora!) definiscono la rotellina del mouse.
Ecco come ho fatto:
if(window.onwheel !== undefined) {
window.addEventListener('wheel', onMouseWheel)
} else if(window.onmousewheel !== undefined) {
window.addEventListener('mousewheel', onMouseWheel)
} else {
// unsupported browser
}
Nota che il sostegno addEventListener nelle vecchie versioni di IE ha bisogno di un polyfill. In alternativa puoi usare il vecchio window.mousewheel = function() {} o qualsiasi altro metodo.
Come si può vedere, il listener di eventi è collegato all'oggetto della finestra. Non puoi collegarlo agli elementi, in modo cross-browser. È possibile utilizzare la proprietà target dell'oggetto evento per vedere dove è stata attivata e fare un filtro su quella base.
PS: un'altra considerazione cross-browser: in IE, è necessario utilizzare la proprietà "wheelDelta" (e invertire il suo segno!) All'interno dell'oggetto evento durante l'elaborazione nella funzione di callback ("onMouseWheel"). Altri browser popoleranno "deltaY" (o "deltaX" per lo scorrimento orizzontale).
Funziona in Firefox e Chrome. ** Demo live: ** http://jsfiddle.net/chtNP/1/ –
Questo non funzionerà molto bene in IE o Opera, a seconda della versione (vedi http://www.adomas.org/javascript- rotellina del mouse /) – Kelvin
@KelvinMackay Ho provato in IE9 e IE8 e funziona. –