Почему Firefox не передает все события колесика мыши моему приложению javascript? - PullRequest
6 голосов
/ 05 июля 2011

Я использую библиотеку protovis (http://mbostock.github.com/protovis/) для рисования графика.
Я загрузил код, который использую на тот случай, если кто-то захочет взглянуть на него:
http://jsfiddle.net/zobel/brEAD/

Вот моя проблема: в Firefox, когда я использую колесо мыши для увеличения или уменьшения масштаба, некоторые события колеса мыши записываются не моим приложением, а самим Firefox. В результате я получаю смесь зумови прокрутки страниц. Вы можете проверить это, сжимая окно Firefox, пока полоса прокрутки не станет видимой.
Эта проблема не возникает в Opera. Почему это происходит и как я могу ее решить?
Заранее большое спасибо.

1 Ответ

3 голосов
/ 07 июля 2011

Может быть ошибка (или простое упущение) в библиотеке JavaScript. Библиотека должна preventDefault() для события DOMMouseScroll.

Благодаря всплытию событий вы можете сделать это самостоятельно на любом объекте DOM, который является родительским узлом графа. Вот один простой пример:

document.body.addEventListener('DOMMouseScroll', function(e){
    e.preventDefault();
}, false);

Это не будет работать в более старых версиях IE, так как он не поддерживает addEventListener, но вы понимаете, в чем дело. Я рекомендую использовать другую универсальную библиотеку JavaScript (например, jQuery) и использовать ее для установки обработчика событий.

...