最近几天一直困扰着我的另一个问题。正如您可能从我的其他问题中看到的那样,我正在创建一些思维导图软件。所以(非常简化)我有两个 div。一个是页面上的正方形,另一个在该 div 内,大约是 10 倍大且可拖动。这样可以将对象放置在屏幕上,然后在添加另一个对象的同时稍微向一侧移动等。我通过创建可滚动的外部 div 来做到这一点。
我遇到的问题与 java 脚本中的鼠标位置有关。如果我在 div 中的任何位置获得鼠标位置,那将是不正确的,因为我将内部 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 的解决方案都可以。再次感谢。