Javascript 在视口外的点获取元素

Javascript get element at point outside viewport

本文关键字:获取 元素 视口 Javascript      更新时间:2023-09-26

是否有类似于document.elementFromPoint(x,y)的东西适用于视口之外的元素?

根据 document.elementFromPoint() 的 MDN 文档 (https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint)

如果指定的点在文档的可见边界之外 或者任一坐标为负,则结果为空。

因此,如果您试图抓取用户视口之外的元素,显然它是行不通的。

谢谢!

嘿,

我遇到了同样的问题,如果元素不在视口的当前范围内,elementFromPoint将返回null

我发现您必须滚动到元素位置才能使其在视口中可见,然后执行elementFromPoint.

(function() {
  'use strict';
  var api;
  api = function(x,y) {
    var elm, scrollX, scrollY, newX, newY;
    /* stash current Window Scroll */
    scrollX = window.pageXOffset;
    scrollY = window.pageYOffset;
    /* scroll to element */
    window.scrollTo(x,y);
    /* calculate new relative element coordinates */
    newX = x - window.pageXOffset;
    newY = y - window.pageYOffset;
    /* grab the element */
    elm = this.elementFromPoint(newX,newY);
    /* revert to the previous scroll location */
    window.scrollTo(scrollX,scrollY);
    /* returned the grabbed element at the absolute coordinates */
    return elm;
  };
  this.document.elementFromAbsolutePoint = api;
}).call(this);

只要坐标是绝对的,就可以简单地使用此命令 pageX pageY

document.elementFromAbsolutePoint(2084, 1536);

此代码也在 GitHub 上打包成一个 bower 组件,以便于包含在项目中。

https://github.com/kylewelsby/element-from-absolute-point

希望这对您的项目有所帮助。