问题 为什么document.elementFromPoint受指针事件影响:无?


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

如果最顶层的元素有 pointer-events: none 在CSS中设置, document.elementFromPoint 没有看到它。 这个小提琴 证明了这种效果。

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

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


4384
2018-01-05 22:14


起源

我同意这个问题。当然,即使指针事件设置为无,也应该可以检测点下的元素。至少可以选择它 - sidonaldson


答案:


规格 告诉我们元素是通过命中测试确定的,所以Chrome似乎在这里表现得很好。其他浏览器可能采用不同的方式,但如果他们遵循规范那么你应该期待 pointer-events 会阻止它运作。

稍后在规范中,它提到W3C目前没有明确定义命中测试。然而,假设他们至少使用类似的东西,可能是安全的 常用的术语


12
2018-01-05 22:20