最近几天一直困扰着我的另一个问题。正如您从我的其他问题中看到的那样,我正在创建一些思维导图软件。所以(非常简化),我有两个 divs。一个是页面上的正方形,另一个在该 div 中内部,大约是它的 10 倍大小,并且可拖动。这是为了能够在屏幕上放置对象,然后稍微移动一下,同时添加其他对象等。我通过创建外部 div 可滚动来实现这一点。
但我遇到的问题与 JavaScript 中的鼠标位置有关。如果我在任何位置获取鼠标位置,它都不正确,因为我将内部 div 向左和向上偏移其大小的一半(因此用户实际上正在查看画布的中心并可以随意移动)。我尝试了数十种不同的鼠标坐标函数,但这些函数似乎都不起作用。我在网上找到了一个被认为是跨浏览器的示例:
function getMouse(e) {
var posx;
var posy;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.getElementById("canvas").scrollLeft;
posy = e.clientY + document.body.scrollTop + document.getElementById("canvas").scrollTop;
}
} //getMouse
但是,即使这样也不起作用。 我几乎可以确定错误是因为我让内部 div 可拖动。 希望我尝试解释得有些道理,但如果没有,这里是一个非常简单的 jsfiddle,试图演示我所遇到的情况(虽然此处没有点击鼠标,纯粹是为了演示我的 div 结构)。 在我制作的产品中,用户将双击画布,然后会出现一个新对象,因此需要正确的鼠标坐标。
我希望有人能帮帮我。
提前致谢。
编辑:未提及我在应用程序的某个部分中使用了 JQuery,因此使用或不使用 JQuery 的解决方案都可以。 再次感谢。