javascript - 如何找到位于给定 (X,Y) 位置的 DOM 节点? ( HitTest )

标签 javascript qt dom hittest

我有 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 refMozilla refQuirksMode 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/

相关文章:

javascript - 计算用最大金额购买的最大单位

c++ - Qt/Qml 和方法重载

c++ - 如何删除QComboBox的所有内容

javascript - 使用 JavaScript 或 Jquery 动态删除 html 输入字段

javascript - 保存从 Firefox 扩展加载的图片

javascript - CKEditor 渲染 Angular 自定义指令

javascript - 在 AngularJS 中使用工厂进行身份验证服务时 undefined object

javascript - 将 select2 限制为仅接受电子邮件地址

从 QObject 继承 QT pimpl

java - removeChild(): how to remove indent too?