2011-07-05 12 views
6

Używam biblioteki protovis (http://mbostock.github.com/protovis/) do rysowania wykresu.
wysłał kod używam w przypadku gdy ktoś chce spojrzeć na to:
http://jsfiddle.net/zobel/brEAD/Dlaczego Firefox nie przekazuje wszystkich zdarzeń kółka myszy do mojej aplikacji javascript?

Oto mój problem: W Firefox, kiedy użyć kółka myszy, aby przybliżyć lub oddalić obraz, niektóre myszy zdarzenia kół nie są przechwytywane przez moją aplikację, ale przez samą przeglądarkę Firefox. W rezultacie otrzymuję mieszankę zoomów i zwojów strony. Możesz to sprawdzić, zmniejszając okno przeglądarki Firefox, aż pasek przewijania stanie się widoczny.
Ten problem nie występuje w Operze. Dlaczego tak się dzieje i jak mogę to rozwiązać?
Dziękuję bardzo z góry.

+2

proszę zamieścić demo programu minimalnego, który demonstruje problem na jsfiddle.net zamiast linku do pliku zip całego źródła – Alnitak

+0

Dzięki Alnitak, tutaj jest jsfiddle http://jsfiddle.net/zobel/brEAD/ – zobel

Odpowiedz

3

Może być błędem (lub zwykłym pominięciem) w bibliotece JavaScript. Biblioteka musi mieć preventDefault() wydarzenie DOMMouseScroll.

Dzięki propagacji zdarzeń można to zrobić samodzielnie na dowolnym obiekcie DOM, który jest węzłem nadrzędnym wykresu. Oto jeden prosty przykład:

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

To nie będzie działać w starszych wersjach IE, ponieważ nie obsługuje addEventListener, ale masz rację. Polecam używanie innej uniwersalnej biblioteki JavaScript (takiej jak jQuery) i użyć jej do ustawienia obsługi zdarzeń.

+0

Dzięki, to rozwiązało problem. – zobel

Powiązane problemy