На інше запитання я склав цю відповідь , включаючи цей зразок коду .
У цьому коді я використовую колесо миші для збільшення / зменшення полотна 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
?