Per una domanda diversa ho composto questa risposta , incluso questo codice di esempio .
In quel codice uso la rotellina del mouse per ingrandire / ridurre una tela HTML5. Ho trovato del codice che normalizza le differenze di velocità tra Chrome e Firefox. Tuttavia, la gestione dello zoom in Safari è molto, molto più veloce rispetto a una di queste.
Ecco il codice che ho attualmente:
var handleScroll = function(e){
var delta = e.wheelDelta ? e.wheelDelta/40 : e.detail ? -e.detail/3 : 0;
if (delta) ...
return e.preventDefault() && false;
};
canvas.addEventListener('DOMMouseScroll',handleScroll,false); // For Firefox
canvas.addEventListener('mousewheel',handleScroll,false); // Everyone else
Quale codice posso usare per ottenere lo stesso valore 'delta' per la stessa quantità di rotellina del mouse su Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 e IE9?
Questa domanda è correlata, ma non ha una buona risposta.
Modifica : ulteriori indagini mostrano che un evento di scorrimento 'su' è:
| evt.wheelDelta | evt.detail ------------------ + ---------------- + ------------ Safari v5 / Win7 | 120 | 0 Safari v5 / OS X | 120 | 0 Safari v7 / OS X | 12 | 0 Chrome v11 / Win7 | 120 | 0 Chrome v37 / Win7 | 120 | 0 Chrome v11 / OS X | 3 (!) | 0 (possibilmente sbagliato) Chrome v37 / OS X | 120 | 0 IE9 / Win7 | 120 | non definito Opera v11 / OS X | 40 | -1 Opera v24 / OS X | 120 | 0 Opera v11 / Win7 | 120 | -3 Firefox v4 / Win7 | indefinito | -3 Firefox v4 / OS X | indefinito | -1 Firefox v30 / OS X | indefinito | -1
Inoltre, l'utilizzo del trackpad del MacBook su OS X offre risultati diversi anche quando ci si sposta lentamente:
- Su Safari e Chrome, il
wheelDelta
valore è 3 anziché 120 per la rotellina del mouse. - Su Firefox , di
detail
solito2
, a volte1
, ma quando si scorre molto lentamente, NESSUN EVENTO HANDLER HANDLER ALCUNA .
Quindi la domanda è:
Qual è il modo migliore per differenziare questo comportamento (idealmente senza alcun agente utente o sistema operativo sniffing)?
e.wheelDelta/120
?