15

如果您使用document.elementFromPoint(x,y),并且多个元素位于提供的坐标处,则它应该返回最顶部的元素(视觉堆叠顺序中的最顶部,而不是源代码)。

如果最上面的元素已经pointer-events: none在 CSS 中设置,document.elementFromPoint则看不到它。这个小提琴演示了效果。

这是预期的行为吗?似乎浏览器正在您提供的坐标处触发点击事件(一个不触发附加点击处理程序或默认行为的秘密点击事件)以查找元素。有什么方法可以查看document.elementFromPoint在不同浏览器中是如何实现的?CSS 属性会影响完全不相关的 DOM 函数的行为似乎很奇怪。

我只在最新的 Chrome 中测试过这个。我敢肯定每个浏览器都会以不同的方式对待它。我主要对基于 webkit 的浏览器感到好奇,但总是欢迎更多关于其他浏览器的信息。

4

1 回答 1

14

规格告诉我们该元素是通过命中测试确定的,因此 Chrome 似乎在这里表现正常。其他浏览器可能会以不同的方式执行此操作,但如果它们遵循规范,那么您应该期望它pointer-events会阻止它运行。

稍后在规范中,它提到此时 W3C 尚未明确定义命中测试。但是,可以安全地假设他们使用的至少与术语的常用用法相似。

于 2013-01-05T22:20:11.660 回答