На інше запитання я склав цю відповідь , включаючи цей зразок коду .
У цьому коді я використовую колесо миші для збільшення / зменшення полотна HTML5. Я знайшов код, який нормалізує різницю швидкості між Chrome і Firefox. Однак управління зумом у Safari відбувається набагато, набагато швидше, ніж в будь-якому з цих.
Ось код, який у мене зараз є:
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
Який код я можу використовувати, щоб отримати те саме значення "delta" для тієї ж кількості колеса миші, що котиться по Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 та IE9?
Це питання пов'язане, але не має гарної відповіді.
Редагувати : Подальше розслідування показує, що одна подія прокрутки "вгору":
| 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 (можливо, неправильно)
Chrome v37 / OS X | 120 | 0
IE9 / Win7 | 120 | невизначений
Opera v11 / OS X | 40 | -1
Opera v24 / OS X | 120 | 0
Opera v11 / Win7 | 120 | -3
Firefox v4 / Win7 | невизначений | -3
Firefox v4 / OS X | невизначений | -1
Firefox v30 / OS X | невизначений | -1
Крім того, використання трек-панелі MacBook в ОС X дає різні результати навіть при повільному переміщенні:
- Для Safari та Chrome
wheelDeltaце значення 3, а не 120 для колеса миші. - На Firefox
detailце, як правило2, іноді1, але при прокручуванні дуже повільно НЕ БУДЬ ВІДПОВІДАЛЬНИЙ ВІДПОВІДНИК .
Тож питання:
Який найкращий спосіб диференціювати таку поведінку (в ідеалі без будь-якого користувацького агента чи нюхання ОС)?
e.wheelDelta/120?