我有 HTML 文档中某个点的坐标 (X,Y)。如何确定这些坐标处的 DOM 节点是什么?
一些想法:
- 是否有我错过的 DOM HitTest 函数,它需要一个点 (X,Y) 并返回那里的 DOM 元素?
- 有没有一种有效的方法来遍历 DOM 元素树来查找包含元素?由于绝对定位的元素,这似乎很棘手。
- 有没有办法在给定的 (X,Y) 位置模拟事件,以便浏览器最终创建一个具有指向该元素的指针的事件对象?
(背景:我将 Qt 的 QWebView 嵌入到 native 应用程序中。我试图根据鼠标所在的 DOM 节点来改变 Qt 小部件提供的上下文菜单,但 Qt 4.5 无法对DOM 元素,尽管该功能将在 4.6 中出现。所以我希望可以将坐标放入 Javascript 中,并使用 DOM API 进行 HitTest 。)
谢谢!
最佳答案
只要您的用户不使用旧版本的 Safari、Chrome 或 Opera,您就很幸运:使用 document.elementFromPoint(x, y)
( MSDN ref 、 Mozilla ref 、 QuirksMode article ) :
Returns the element from the document ... which is the topmost element which lies under the given point.
如果您需要支持较旧的浏览器,除了您建议的之外,我想不出很多选择(遍历整个 DOM,查看元素位置和大小,看看它们是否封装了您的 (x, y)) .
我认为事件模拟不会起作用,但这是一个有趣的想法。我对事件调度的理解是,您指定事件的目标,这正是您首先要找出的目标。
关于javascript - 如何找到位于给定 (X,Y) 位置的 DOM 节点? ( HitTest ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569775/