Простое и рабочее решение:

угой вопрос Я сочинилэтот ответ, в том числеэтот пример кодаВ этом коде я использую колесо мыши, чтобы увеличивать или уменьшать масштаб HTML5 Canvas. Я нашел код, который нормализует разницу в скорости между Chrome и Firefox. Однако обработка масштабирования в Safari намного, намного быстрее, чем в любом из них..

Вот код, который у меня сейчас есть:

Какой код можно использовать, чтобы получить одинаковое значение «delta» для одинакового количества прокрутки колеса мыши в Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 и IE9?

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

Этот вопрос

 связано, но не имеет хорошего ответа.редактировать

: Дальнейшее расследование показывает, что одно событие прокрутки «вверх»:Кроме того, использование трекпада MacBook в OS X дает разные результаты даже при медленном движении:

                  | 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      (possibly wrong)
 Chrome v37/OS X  |       120      |      0
        IE9/Win7  |       120      |  undefined
  Opera v11/OS X  |        40      |     -1
  Opera v24/OS X  |       120      |      0
  Opera v11/Win7  |       120      |     -3
 Firefox v4/Win7  |    undefined   |     -3
 Firefox v4/OS X  |    undefined   |     -1
Firefox v30/OS X  |    undefined   |     -1

На Safari и Chrome

 значение 3 вместо 120 для колеса мыши.wheelDeltaНа Firefox обычноdetailиногда2, но при прокрутке очень медленно1НИКАКИХ МЕРОПРИЯТИЙ НЕ РАБОТАЕТИтак, вопрос:.

Каков наилучший способ дифференцировать это поведение (в идеале, без какого-либо агента пользователя или прослушивания ОС)?

Извините, я удалил свой вопрос. Я пишу ответ прямо сейчас. Прежде чем я углублюсь, вы говорите о прокрутке в Safari в Mac OS X? Когда вы немного прокручиваете, это немного прокручивается, но если вы сохраняете постоянную скорость, она постепенно становится быстрее?

Ответы на вопрос(10)

Ваш ответ на вопрос