如果使用document.elementFromPoint(x,y),并且在提供的坐标处有多个元素,则应该返回最上面的元素(按可视堆栈顺序排列的最上面的元素,而不是源代码)。

如果最顶部的元素在CSS中设置了pointer-events: none,则document.elementFromPoint看不到它。 This fiddle演示了效果。

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

我只在最新的Chrome浏览器中进行过测试。我敢肯定每个浏览器对此都有不同的对待。我主要是对基于Webkit的浏览器感到好奇,但是总是欢迎您提供有关其他浏览器的更多信息。

最佳答案

The specs告诉我们该元素是通过点击测试确定的,因此Chrome似乎在这里表现良好。其他浏览器的操作方式可能有所不同,但是如果他们遵循规范,则应期望pointer-events阻止其运行。

稍后在规范中,它提到W3C目前尚未明确定义点击测试。但是,可以肯定地假设他们至少使用了类似于common use of the term的东西。

07-24 16:28