2011-07-05 9 views
6

Estoy usando la biblioteca de protovis (http://mbostock.github.com/protovis/) para dibujar un gráfico.
he subido el código que estoy utilizando en caso de que alguien quiere echar un vistazo a él:
http://jsfiddle.net/zobel/brEAD/¿Por qué Firefox no pasa todos los eventos de la rueda del mouse a mi aplicación javascript?

Aquí está mi problema: En Firefox, cuando se utiliza la rueda del ratón para acercar o alejar, algunas de ratón los eventos de rueda no son capturados por mi aplicación sino por Firefox. El resultado es que termino obteniendo una combinación de acercamientos y desplazamiento de página. Puede probar esto reduciendo la ventana de Firefox hasta que la barra de desplazamiento sea visible.
Este problema no ocurre en Opera. ¿Por qué ocurre y cómo puedo resolverlo?
Muchas gracias de antemano.

+2

publique una demostración del programa mínimo que demuestre el problema en jsfiddle.net en lugar de un enlace a un archivo comprimido de su fuente completa – Alnitak

+0

Gracias Alnitak, aquí está el jsfiddle http://jsfiddle.net/zobel/brEAD/ – zobel

Respuesta

3

Puede haber un error (o simple omisión) en la biblioteca de JavaScript. La biblioteca necesita preventDefault() en el evento DOMMouseScroll.

Gracias al burbujeo de eventos, puede hacerlo usted mismo en cualquier objeto DOM que sea un nodo padre del gráfico. He aquí un ejemplo sencillo:

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

Esto no funcionará en versiones antiguas de IE, ya que no soporta addEventListener, pero usted consigue el punto. Recomiendo usar otra biblioteca de JavaScript de propósito general (como jQuery) y usar eso para configurar tu controlador de eventos.

+0

Gracias, esto resolvió el problema. – zobel

Cuestiones relacionadas