Para una pregunta diferente , compuse esta respuesta , incluido este código de muestra .
En ese código, uso la rueda del mouse para acercar / alejar un lienzo HTML5. Encontré un código que normaliza las diferencias de velocidad entre Chrome y Firefox. Sin embargo, el manejo del zoom en Safari es mucho, mucho más rápido que en cualquiera de ellos.
Aquí está el código que tengo actualmente:
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
¿Qué código puedo usar para obtener el mismo valor 'delta' para la misma cantidad de rueda del mouse en Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 e IE9?
Esta pregunta está relacionada, pero no tiene una buena respuesta.
Editar : Una investigación adicional muestra que un evento de desplazamiento 'arriba' es:
El | evt.wheelDelta | evt.detail ------------------ + ---------------- + ------------ Safari v5 / Win7 | 120 0 0 Safari v5 / OS X | 120 0 0 Safari v7 / OS X | 12 | 0 0 Chrome v11 / Win7 | 120 0 0 Chrome v37 / Win7 | 120 0 0 Chrome v11 / OS X | 3 (!) | 0 (posiblemente incorrecto) Chrome v37 / OS X | 120 0 0 IE9 / Win7 | 120 indefinido Opera v11 / OS X | 40 | -1 Opera v24 / OS X | 120 0 0 Opera v11 / Win7 | 120 -3 Firefox v4 / Win7 | indefinido | -3 Firefox v4 / OS X | indefinido | -1 Firefox v30 / OS X | indefinido | -1
Además, el uso del trackpad MacBook en OS X ofrece resultados diferentes incluso cuando se mueve lentamente:
- En Safari y Chrome, el
wheelDelta
valor es 3 en lugar de 120 para la rueda del mouse. - En Firefox ,
detail
generalmente2
, a veces1
, pero cuando se desplaza muy lentamente, NO HAY MANEJO DE EVENTOS .
Entonces la pregunta es:
¿Cuál es la mejor manera de diferenciar este comportamiento (idealmente sin ningún agente de usuario o sistema operativo)?
e.wheelDelta/120
?