在javascript中获取相对鼠标X/Y
我在书页的某个地方有一个div。然后我得到鼠标XY:在javascript中获取相对鼠标X/Y,javascript,mouse,coordinates,Javascript,Mouse,Coordinates,我在书页的某个地方有一个div。然后我得到鼠标XY: var relativeMouseX = self.gCurrentMouseX - self.gContainerLeft; var relativeMouseY = self.gCurrentMouseY - self.gContainerTop; 其中,当前mousex/y通过以下方式获得: // Update mouse coords this.gUpdateMousePos = function(e
var relativeMouseX = self.gCurrentMouseX - self.gContainerLeft;
var relativeMouseY = self.gCurrentMouseY - self.gContainerTop;
其中,当前mousex/y通过以下方式获得:
// Update mouse coords
this.gUpdateMousePos = function(evt) {
if (evt === undefined) evt = window.event;
if (window.event) {
this.gCurrentMouseX = event.clientX;
this.gCurrentMouseY = event.clientY;
}
else {
this.gCurrentMouseX = evt.clientX;
this.gCurrentMouseY = evt.clientY;
}
}
这在测试中效果很好,但是当div位于页面下方时,它会弄乱鼠标的X/Y,因为坐标似乎只在wg区域的视图中,而不是整个页面
X-co-ord工作得很好,因为页面在水平方向上的扩展宽度永远不会超过浏览器的大小,但是垂直方向是个问题
您知道如何获得鼠标相对于元素的X/Y吗?您需要考虑父元素,才能找到子元素在页面上的真实位置。看
event.clientX+document.body.scrollLeft
和event.clientX+document.body.scrollTop
或
event.pageX
和event.pageY
第一个是将当前滚动位置添加到值中,第二个是鼠标相对于页面的位置,而不是客户端窗口。您可能只需要知道元素的位置并计算这些差异。但是,这是相对于页面的位置,而不是元素完美的谢谢!使用了scrollTop修复程序,效果非常好。在IE中不起作用,document.documentElement.scrollTop可以在更广泛的文档类型中工作。您可以在IE中使用
pageX
和pageY
/**
* Locate the real position of an element,
* relative to its parent's offsets
*/
function findPos (obj) {
var curleft = 0,
curtop = 0;
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
return { x: curleft, y: curtop };
}
}