2

如果鼠标悬停,我可以得到一个对象。我可以在任何给定时间获取鼠标的坐标。给定它的坐标,我如何获得一个对象 - 如果它们与鼠标不同?

本质上,用户将 div 放在屏幕上的某个位置。由于 div 比鼠标光标宽,我需要知道 div 的角在什么对象上(而不是鼠标在什么对象上)。有没有办法在 JS 中引发 mousemove 事件 - 将坐标传递给它?
谢谢


对于阅读这篇文章的其他人来说,这只是一个快速的帖子脚本。虽然我没有选择 jquery 作为我的答案,但它可能是你的答案。对于我们想要提供的许多客户端工具,这似乎是一个非常灵活且功能丰富的解决方案。

4

3 回答 3

1

没有直接回答您的问题,但您是否尝试过使用 jQuery UI 等 javascript 库?它提供了良好的拖放支持,您可以做您所说的各种事情......例如。您可以使页面的某些元素可拖动而其他元素可放置,然后在用户拖动元素时处理事件。它为包含“触摸”(以及“适合”、“相交”、“指针”)的可放置对象提供了容差,因此您可以处理可放置目标的“过度”事件并且您会得到一个事件当 div 的角在给定元素上方时触发的处理程序。此事件处理程序为您提供对被拖动元素以及被拖动元素的引用。(有点倒退到你问这个问题的方式,

希望这会有所帮助...

于 2009-04-09T00:34:10.490 回答
1

没有办法引发 mousemove 并让它填充生成的目标元素属性,不。

有一种方法可以从任意坐标中获取元素,但您不会很喜欢它。它涉及遍历每个页面元素并计算其尺寸(来自 offsetLeft/Top/Parent)以及哪些元素覆盖哪些其他元素(来自计算的样式“位置”和“z-index”)......本质上,重新实现部分浏览器自己的脚本布局引擎。如果您有带有“溢出”滚动/自动的元素,则需要进行更多计算。

如果您的情况有限(例如,您只能将 div 放在一组其他静态定位的 div 中的某处)它是可以管理的,但一般情况下非常困难并且一点也不好玩。(也许某处有人将这样的功能打包到库或框架插件中,但我还没有遇到过。)

如果你能找到另一种方法来让你的拖放表现得很好,而不需要你这样做,那就这样做吧!

于 2009-04-09T00:38:46.890 回答
0

要从它的坐标中获取一个对象,有document.elementFromPoint(x,y). Quirksmode 的兼容性表显示它适用于最新的浏览器。

于 2012-04-10T22:07:34.720 回答