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

时间:2011-03-09 23:52:11

标签: javascript google-chrome

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

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

测试此功能的一种简单方法是在Chrome( ctrl-shift-i - >脚本 - >'监视表达式')中(确保页面高度缩小到小于1000像素) )

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

  1. 始终为可见区域外的点返回null
  2. x和y相对于可见屏幕的左上角和右上角
  3. 我在两个假设上都失败了,

2 个答案:

答案 0 :(得分:39)

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

以下代码为我制定了:

document.elementFromPoint(X - window.pageXOffset, Y - window.pageYOffset);

或者,如果您正在倾听以下活动:

document.elementFromPoint(e.pageX - window.pageXOffset, e.pageY - window.pageYOffset);

答案 1 :(得分:2)

当您在窗口外指定一个点时,它不会返回任何元素。它返回在该点可见的元素,而不是在窗口具有不同大小时可见的元素。请注意,更改窗口的大小可能会导致元素移动,因此如果它确实返回了可能在该点显示的元素,则无法获得一致的答案。

无论你如何在窗口中滚动内容,窗外的一个点仍然在窗外。