Событие с прокруткой/перемещением мыши

Я установил свое приложение/сайт таким образом, что у меня есть элемент холста с абсолютным расположением поверх панели прокрутки, когда свитки прокрутки меня применяют при смещении к холсту, чтобы он выглядел так, как будто изображение прокручивается (это позволяет я должен иметь огромный холст без накладных расходов огромного элемента холста). Проблема в том, что когда моя мышь находится над элементом холста, колесо прокрутки не работает, поскольку событие прокрутки не пузырится. В этом случае, однако, мне нужно пузыриться, чтобы заставить полосу прокрутки работать.

Я использую GWT для этого, поэтому я бы предпочел не полагаться на решение jQuery (хотя чистое решение для javascript было бы в порядке), так как его сложно смешивать. Я могу захватить событие mousewheel, но главная проблема заключается в том, что он не отличается от прокрутки (вверх/вниз) и наклона колеса (влево/вправо). Я попробовал eventGetShiftKey(), eventGetButton(), eventGetType() и некоторые другие, но все эти методы возвращают одинаковый точный результат для прокрутки и наклона (наклонение влево = прокрутка вверх, наклонение вправо = прокрутка вниз).

Кажется, что наилучшим способом справиться с этим является пузырь фактического события на scrollpanel (который, кстати, также содержит родительский div, который содержит холст с абсолютным расположением), но я не уверен, что это возможно?

Ответ 1

Событие Mousewheel пузырится, чтобы различать прокрутку вверх/вниз, используйте атрибуты event.wheelDelta и event.detail.

event.wheelDelta​​strong > указывает расстояние, которое поворачивала колесная кнопка, выраженное в кратных 120. Положительное значение указывает, что кнопка колеса повернулась от пользователя. Отрицательное значение указывает, что кнопка колеса повернута к пользователю.

event.detail указывает количество "тиков", перемещаемых колесом мыши. Положительные значения означают "вниз/вправо", отрицательные вверх/влево.
event.axis указывает ось жестов прокрутки (по горизонтали или по вертикали). Этот атрибут был добавлен в Firefox 3.5

Также см. статью в которой немного говорится о нормализации.