-1

このコードは Google Chrome と IE では機能しますが、FireFox では機能しません。

function drawChildren(names) {
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");       
    var ctxcolor = "#000000";

    if(listeners < 1){
        c.addEventListener("click", getPosition, false);
        listeners = 1;
    } // At the click function "getPosition" is executed
}

function getPosition(event) {

    if ( event.offsetX == null ) { // Firefox
        clickedX = event.layerX;
        clickedY = event.layerY;
    } else {                       // Other browsers
        clickedX = event.offsetX;
        clickedY = event.offsetY;
    }

    checkCoordinates(clickedX, clickedY);  
}
4

1 に答える 1

0

上記のコメントに投稿された質問に答えるために、がクリックfunction getPosition()されるたびに呼び出されます。myCanvas(あなたのコードが言うのでc.addEventListener("click", getPosition, false);

マウス位置検出コードを使用すると、オフセットとレイヤー化がどのように機能するかわかりませんが、次のコードを使用すると、ブラウザの端から始まるのではなく、常に x 座標と y 座標が取得されることがわかります。サイトの任意の要素で:

if(evt.pageX){
    var xPos = evt.pageX;
    var yPos = evt.pageY;
}else if(evt.clientX){
    var xPos = evt.clientX + ((document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft);
    var yPos = evt.clientY + ((document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop);
}

あなたのコードはこれと同じことをするかもしれませんが、私は私にとってもうまくいくものを提供したかっただけです:)

于 2012-07-02T21:35:59.223 に答える