Получение координат мыши в Firefox 41

Я пытаюсь перетащить элемент на основе координат мыши. Он отлично работает в Chrome и IE, но не работает в Firefox.

Ниже я попробовал:

function createShape(event)
{
    var stageContainer = $(".mainArea");
    var stageOffset = stageContainer.offset();
    clientX = event.clientX;
    clientY = event.clientY;
    offsetX = stageOffset.left;
    offsetY = stageOffset.top;
    x = clientX - offsetX; // works in chrome and IE
    y = clientY - offsetY; // works in chrome and IE

    //Firefox
    var offX = (event.offsetX || event.pageX - $(event.target).offset().left);
    var offY = (event.offsetY || event.pageY - $(event.target).offset().top);
    layerX = event.layerX;
    layerY = event.layerX;
    screenX = event.screenX;
    screenY = event.screenY;
    pageX = event.pageX;
    pageY = event.pageY;
    e = jQuery.event.fix(event);
    var target = event.target || event.srcElement;

    //Right now this is working but x and y are not exactly correct
    x = screenX + offsetX
    y = screenY + offsetY

Не работает в firefox

ClientXY return 0,0
LayerXY return largest number like 173839,173839
pageX and pageY returns 0,0
element.offset().left returns 70 always
element.offset().top returns 63 always

createRect(x, y); // creating element on dragend with x and y coordinates on dragend

}

Как мне получить координаты перетаскивания мышью?

1 ответ

К сожалению, Firefox не заполняет pageX а также pageY свойства на drag События. Соответствующий отчет об ошибках открыт с 2009 года, и не похоже, что он будет исправлен в ближайшее время. Общее решение состоит в том, чтобы слушатьdragoverсобытие в родительском элементе (хотя это затрудняет обнаружение перетаскиваемого элемента) или обнаружение положения перетаскиваемого элемента другим способом.

Другие вопросы по тегам