Problema de manejo de eventos entre navegadores, mousedown window.event.clientY

Así que tengo un problema con mi manejo de eventos en un guión que estoy escribiendo. Todo funciona bien en Chrome, y en Safari, aunque funciona MUY lentamente, todavía funciona. En Firefox, uno de los eventos no funciona en absoluto.

Básicamente, en la carga de la página, estoy creando un grupo de detectores de eventos:

canvasElem.addEventListener("mousedown",down,false);
canvasElem.addEventListener("mouseup",up,false);
canvasElem.addEventListener("mousemove",move,false);

Estos detectores de eventos funcionan, de eso estoy seguro, pero uno de los detectores de eventos (que llama a la función down) deja de ejecutarse a la mitad debido a estas dos líneas de código:

dXImgSpin=(centerXImgSpin-expansionOffsetXImgSpin)-(window.event.clientX);
dYImgSpin=(centerYImgSpin-expansionOffsetYImgSpin)-(window.event.clientY);

Ahora entiendo (más o menos entiendo, soy nuevo en la programación, por lo que todavía está un poco por encima de mi cabeza) que esto no funcionará en Firefox porque estoy usando el modelo IE DOM en lugar del modelo W3C, pero en otra parte de el programa con el que estaba teniendo problemas, /* event.pageX no funciona en Firefox, pero sí en Chrome */ Lo arreglé agregando un cambio en la forma en que se manejó el evento (también conocido como agregando un canvasEleem.addEventListener), y luego agregando una línea de código

event = event || window.event;

y cambiando window.event.clientX a solo event.clientX. Sin embargo, cuando trato de hacer esto en esta función diferente, la línea de código anterior ni siquiera se ejecutará.

Cualquier cosa ayuda, y lo siento si esta pregunta no está bien formulada, pero prácticamente me he topado con una pared en mi comprensión actual de javascript, y no puedo entender cómo superarlo. Si hay más información que se requiere, no dude en hacérmelo saber!

Isaac

El flujo completo de código para cuando se presiona hacia abajo:

canvasElem.addEventListener("mousedown",down,false);

function down(){

mouseDown=1;

getNewAngle();

angleMomentumImgSpin=.005;

}

La función getNewAngle() es el problema:

function getNewAngle(){

    dX2ImgSpin=dX1ImgSpin;
    dY2ImgSpin=dY1ImgSpin;
    dX1ImgSpin=dXImgSpin;
    dY1ImgSpin=dYImgSpin;



    //THESE ARE THE PART THAT ARE CAUSING THE PROBLEM
    dXImgSpin=(centerXImgSpin-expansionOffsetXImgSpin)-(window.event.clientX);
    dYImgSpin=(centerYImgSpin-expansionOffsetYImgSpin)-(window.event.clientY);


    //This if statement is to avoid the drawing from flipping when the mouse crosses the halfwaypoint
    if (dXImgSpin>0){
    angleImgSpin=(Math.atan((dYImgSpin/dXImgSpin))-angleStartImgSpin);
    }else{angleImgSpin=(Math.atan((dYImgSpin/dXImgSpin))-angleStartImgSpin+(Math.PI))}
    //alert(angle);

}

preguntado el 12 de junio de 12 a las 22:06

Creo que lo descubrí: las funciones de abajo y obtener un nuevo ángulo se basaron en un evento, agregando getNewAngle (evento) y luego evento = evento || ventana.evento; ¡y cambiar window.event.clientX a event.clientX pareció hacerlo! Con suerte, esta es realmente la respuesta correcta, y no una solución tonta que en realidad no crea una solución, solo oculta el problema... -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.