Это проблема, с которой я боролся уже несколько часов сегодня, и не впервые: (
Я пытался суммировать значения по «смахиванию» и видеть, как отличаетсябраузеры сообщают о значениях, и они сильно различаются: Safari сообщает о больших количествах на порядок почти на всех платформах, Chrome сообщает гораздо больше (например, в 3 раза), чем firefox, при этом firefox сбалансирован в долгосрочной перспективе, но сильно отличается среди платформ на малыхдвижения (в гноме Ubuntu, почти только +3 или -3, кажется, что он суммирует меньшие события и затем отправляет большое «+3»)
В настоящее время найдено три решения:
- Уже упомянутое "используйте только знак", который убивает любое ускорение
- Переведите браузер на более низкую версию и платформу и настройте его правильно
- Qooxdoo недавно реализовал самалгоритм адаптации, который в основном пытается масштабировать дельту на основе минимального и максимального значения, полученного до сих пор.
Идеяв Qooxdoo это хорошо, и работает, и это единственное решение, которое я нашел в настоящее время полностью совместимым кросс-браузер.
К сожалению, он имеет тенденцию перенормировать и ускорение.Если вы попробуете это (в их демонстрациях) и прокрутите некоторое время вверх и вниз на максимальной скорости, вы заметите, что чрезвычайно быстрая или очень медленная прокрутка в основном производит почти одинаковое количество движения.С другой стороны, если вы перезагрузите страницу и проведете ее очень медленно, вы заметите, что она будет прокручиваться довольно быстро ».
Это разочаровывает пользователя Mac (такого как я), который использовал для энергичной прокруткитачпад и ожидание добраться до верха или низа прокручиваемого объекта.
Еще больше, поскольку он уменьшает скорость мыши на основе полученного максимального значения, чем больше пользователь пытается ускорить его, темчем дальше, тем медленнее будет работать, а у пользователя с «медленной прокруткой» будут довольно высокие скорости.
Это делает это (иначе блестящее) решение несколько лучшей реализацией решения 1.
Я портировалРешение для плагина jquery mousewheel: http://jsfiddle.net/SimoneGianni/pXzVv/
Если вы поиграете с ним некоторое время, вы увидите, что вы начнете получать довольно однородные результаты, но вы также заметите, что он имеет тенденцию к +Значения 1 / -1 довольно быстрые.
Сейчас я работаю над его улучшением, чтобы лучше обнаруживать пики, чтобы они не отправляли все "в масштабе".Также было бы неплохо также получить значение с плавающей запятой между 0 и 1 в качестве значения дельты, чтобы был согласованный вывод.