在javascript中获取相对鼠标X/Y

在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

我在书页的某个地方有一个div。然后我得到鼠标XY:

        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 };
    }
}