事件处理Crossbrowser问题,mousedown window.event.clientY

时间:2012-06-12 21:11:01

标签: javascript events firefox dom event-handling

所以我在我写的脚本中遇到了事件处理问题。整个事情在chrome中运行良好,在safari中即使运行非常缓慢,它仍然有效。在Firefox中,其中一个事件根本不起作用。

基本上,在页面加载时,我创建了一堆事件监听器:

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

这些事件监听器工作,我确信,但是其中一个事件监听器(调用down函数)因为这两行代码而停止运行:

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

现在我理解了(有点理解,我是编程的新手,所以它仍然有点过头)这在firefox中不起作用,因为我使用的是IE DOM模型,而不是W3C模型,但是我遇到问题的程序的另一部分,/ * event.pageX not working in firefox, but does in Chrome * /我通过添加更改事件的处理方式(也就是添加canvasEleem.addEventListener)来修复它,然后添加一行代码< / p>

event = event || window.event;

并将window.event.clientX更改为event.clientX。但是,当我尝试在这个不同的函数中执行此操作时,上面的代码行甚至都不会运行。

任何事情都有帮助,如果这个问题没有得到很好的表达,我很抱歉,但是我在目前对javascript的理解中已经碰壁了,并且无法理解如何克服它。如果还有其他信息需要,请随时告诉我们!

艾萨克

按下按下时的完整代码流程:

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

function down(){

mouseDown=1;

getNewAngle();

angleMomentumImgSpin=.005;

}

getNewAngle()函数是问题所在:

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);

}

0 个答案:

没有答案