2011-07-05 75 views
13

如何在raphaeljs库中获取鼠标光标坐标?在raphael中获取光标坐标

我想是这样的:

rect.mousemove(function (event) { 
     thisGrid.Popup.Show(event.layerX, event.layerY, ["clientX:", event.clientX, " clientY:", event.clientY, "\n", "layerX:", event.layerX, "layerY:", event.layerY, "\n", 
      "pageX:", event.pageX, "pageY:", event.pageY].join(' ')); 

         } 
        ); 

但是,所有这些属性返回坐标窗口或某事的相对左上角。

下面是截图

enter image description here

回答

12

我也有过这个问题。你需要考虑当前的分区。在我的情况下,div被称为画布。对于坐标我用下面的:

posx = e.pageX - $(document).scrollLeft() - $('#canvas').offset().left; 
posy = e.pageY - $(document).scrollTop() - $('#canvas').offset().top; 

注:我也使用jQuery也因此,使用$的。如果你不想使用jQuery,你可以使用document.getElementById。

+4

如果Raphael只计算了这些点(即相对于Raphael.paper坐标)并将它们添加到事件对象中,那将会非常好。 –

-1

计算与事件源元素(event.srcElement)

+0

但事件不包含srcElement属性。事件有originalTarget CurrentTarget和其他东西。我不知道如何获得目标坐标。我认为应该是做这件事的简单方法。 – Neir0

+0

srcElement是事件对象的本机js属性。在jquery – hungryMind

+1

中查找等价物,但它不是jQuery。 – Neir0

9

如果你想坐标相对于你的DIV的位置,尝试使用event.offsetX/OFFSETY

+0

这对我有用,而接受的答案(和几个变化)没有。 Event.offsetX正好在Raphael用于绘制的坐标系中。 (我的div高度和宽度与我的Raphael init的高度和宽度相匹配 - 我还没有测试过这是否是它的工作原理的一部分。) – Matt

+0

对我不起作用。 – Armand

+1

在firefox事件中没有offsetX,offsetY,但是具有layerX和layerY – blazkovicz