如果您使用document.elementFromPoint(x,y)
,并且多个元素位于提供的坐标处,则应该返回最顶层的元素(在视觉堆叠顺序中最顶层,而不是源代码)。
如果最顶层的元素在CSS中设置了pointer-events: none
,则document.elementFromPoint
看不到它。 This fiddle证明了这种效果。
这是预期的行为吗?似乎浏览器在您提供的坐标处触发点击事件(一个不会触发附加点击处理程序或默认行为的机密点击事件)以查找该元素。有没有办法看到document.elementFromPoint
如何在不同的浏览器中实现? CSS属性会影响完全不相关的DOM函数的行为,这似乎很奇怪。
我只在最新的Chrome中对此进行了测试。我确定每个浏览器对待的方式都不同。我主要对基于webkit的浏览器感到好奇,但是关于其他浏览器的更多信息总是受欢迎的。
答案 0 :(得分:12)
The specs告诉我们元素是通过点击测试确定的,因此Chrome似乎在这里表现得很好。其他浏览器可能会采用不同的方式,但如果他们遵循规范,那么您应该期望pointer-events
会阻止其运行。
稍后在规范中,它提到W3C目前没有明确定义命中测试。但是,假设他们至少使用与common use of the term类似的东西,可能是安全的。