event.pageX不能在Firefox的工作,但确实在Chrome(event.pageX no

2019-09-18 00:23发布

所以,我有我的想法是一个简单的问题,但寻找解决方案的大约一个星期后,我似乎无法找到它背后的原因。

基本上我打电话以下每次点击鼠标时的功能,以及它在Chrome中工作正常,但在Firefox中的alert("This is not called")不会被调用。

我知道这个问题是在两行代码:

x = event.pageX - canvas.offsetLeft;
y = event.pageY - canvas.offsetTop;

但似乎无法找到什么是错。 Mozillas网站说, event.pageX是一个合法的命令调用,并适当canvas.offsetLeft

但功能仍是没有得到调用。 我试图定义的函数的变量,而不是全局的,并且不工作,并且已经尝试了一些其他的选择了,包括一个jQuery的事件处理程序,但我想尝试一下,如果在所有可能从jQuery的远离,主要是因为我想明白是怎么回事,不只是找到一些修补过它。

任何帮助将非常赞赏,非常感谢您的宝贵时间

同时,在有问题的网站是http://cabbibo.com 。

编辑:如果它帮助所有,在Firefox的JavaScript其余的运行速度非常慢,这使我相信它可以在代码中是一个问题在其他地方,例如当侧导航开启,每次的功能动画被调用,它需要更长的时间,那么它应该。

艾萨克

function q(event){  
    if(hasBeenCalled==0){       
        event = event || window.event;
        var canvas = document.getElementById('canvas');

        x = event.pageX - canvas.offsetLeft;
        y = event.pageY - canvas.offsetTop;

        alert("This Is Not Called");

        Changer2();
        stopDraw();
        moveToCenter();

        t = setInterval(rotateDrawRec, 1);
    }else{}
}

Answer 1:

而不是这样做:

<canvas id="canvas" onclick="q()"  width="1000" height="900"></canvas>

function q(event){  
    if(hasBeenCalled==0){       
        event = event || window.event;
        var canvas = document.getElementById('canvas');

        x = event.pageX - canvas.offsetLeft;
        y = event.pageY - canvas.offsetTop;

        alert("This Is Not Called");

        Changer2();
        stopDraw();
        moveToCenter();

        t = setInterval(rotateDrawRec, 1);
    }else{}
}

尝试这个:

<canvas id="canvas" width="1000" height="900"></canvas>

var canvasElem = document.getElementById('canvas');
canvasElem.addEventListener("click", q, false);

function q(event){  
    if(hasBeenCalled==0){       
        event = event || window.event;

        x = event.pageX - this.offsetLeft;
        y = event.pageY - this.offsetTop;

        alert("This Is Not Called");

        Changer2();
        stopDraw();
        moveToCenter();

        t = setInterval(rotateDrawRec, 1);
    }else{}
}

的jsfiddle:
http://jsfiddle.net/5Xs2S/3/



Answer 2:

您的网站(http://cabbibo.com/)抛出线61的“canvas3为空”的错误:

var ctx3 = canvas3.getContext("2d");

此错误停止整个脚本的执行,所以可以理解的警报q()不会被调用无论是。



文章来源: event.pageX not working in firefox, but does in Chrome