我有 HTML 文档中一个点的坐标 (X,Y)。如何确定这些坐标处的 DOM 节点是什么?
一些想法:
- 是否有我错过的 DOM 命中测试函数,它需要一个点 (X,Y) 并返回那里的 DOM 元素?
- 有没有一种有效的方法来遍历 DOM 元素树来查找包含元素?由于绝对定位的元素,这似乎很棘手。
- 有没有办法在给定的 (X,Y) 位置模拟事件,以便浏览器最终创建一个具有指向该元素的指针的事件对象?
(背景:我正在将 Qt 的 QWebView 嵌入本机应用程序中。我试图根据鼠标悬停的 DOM 节点来改变 Qt 小部件提供的上下文菜单,但 Qt 4.5 无法对 DOM 元素进行命中测试,尽管该功能将在 4.6 中推出。所以我希望我可以将坐标放入 Javascript 中并使用 DOM API 进行命中测试。)
Thanks!
只要您的用户不使用旧版本的 Safari、Chrome 或 Opera,您就很幸运:使用document.elementFromPoint(x, y)
(MSDN ref http://msdn.microsoft.com/en-us/library/ms536417(VS.85).aspx, Mozilla 参考 https://developer.mozilla.org/En/DOM:document.elementFromPoint, 怪癖模式文章 http://www.quirksmode.org/blog/archives/2010/06/more_ie9_goodne.html):
返回文档中的元素
...这是最上面的元素
位于给定点下方。
如果您需要支持较旧的浏览器,除了您建议的之外,我想不出很多选择(遍历整个 DOM,查看元素位置和大小并查看它们中是否有任何一个封装了您的 (x, y))。
我认为事件模拟不会起作用,但这是一个有趣的想法。我对事件调度的理解是,您指定事件的目标,这正是您首先要找出的目标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)