为什么document.elementFromPoint对可见文档外的元素返回null

Joe*_*oel 6 javascript google-chrome

当文档加载时,如果该像素位于可见文档之外,为什么document.elementFromPoint(500,1000) 这里返回null?

我注意到document.elementFromPoint,对于最初在可见文档之外的任何点,以及在滚动到视图之后,返回null.

一种简单的测试方法是在Chrome中(ctrl-shift-i - > scripts - >'watch expressions')(确保页面高度缩小到小于1000像素)

编辑:所以它确实有意义,按照文档

  1. 对于可见区域外的点,始终返回null
  2. x和y相对于可见屏幕的左上角和右上角

我在两个假设上都失败了,

Ant*_*sov 42

所以你有点回答了你自己的问题:document.elementFromPoint在视口坐标而不是文档中工作.所以你需要做的就是添加一个滚动补偿.

以下代码为我解决了:

document.elementFromPoint(X - window.pageXOffset, Y - window.pageYOffset);
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在倾听以下事件:

document.elementFromPoint(e.pageX - window.pageXOffset, e.pageY - window.pageYOffset);
Run Code Online (Sandbox Code Playgroud)

  • 如果我能提升这个+100.谢啦. (5认同)

Guf*_*ffa 3

当您指定窗口之外的点时,它不返回任何元素是有道理的。它返回此时可见的元素,而不是窗口大小不同时可见的元素。考虑到更改窗口的大小可能会导致元素移动,因此如果它确实返回可能在该点显示的元素,您将不会得到一致的答案。

无论您如何滚动窗口中的内容,窗口之外的点仍然位于窗口之外。