2015-09-29 228 views
2

我想拖放一个基于鼠标坐标的元素。它在Chrome和IE中工作正常,但不能在Firefox中工作。在firefox中获取鼠标坐标41

下面是我曾尝试:

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 

}

我怎么拖高端鼠标的坐标?

回答

2

不幸的是,Firefox并没有在drag事件中填写pageXpageY属性。相关的bug report自2009年开始营业,看起来并不像近期那样得到修复。常见的解决方案是父元素上的listen for dragover事件(尽管它使检测哪个元素被拖动变得困难)或检测被拖动元素的位置in some other way

+0

我认为您在链接中提供的解决方案在最新的Firefox中不起作用 – Satyadev