如何在火狐中获取鼠标位置

How do I get the mouse position in FireFox?

本文关键字:获取 鼠标 位置 火狐      更新时间:2023-09-26

此代码适用于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);  
}

为了回答您在上述评论中发布的问题,每当单击myCanvas时都会调用您的function getPosition()。(因为你的代码说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);
}

您的代码可能会做与此相同的事情,但我只是想提供对我有用的东西:)