【问题标题】:getElementsByPosition() in javascript possible?javascript 中的 getElementsByPosition() 可能吗?
【发布时间】:2013-09-20 05:44:03
【问题描述】:

我正在做一个研究项目,其想法是扫描呈现的网页中的元素,以计算其内容和与其他 DOM 区域的布局。

基本上我需要从左上角到底部向下扫描可见页面。

给定一个已知元素,很容易得到它的位置,如.offsetLeftoffsetTop,或jQuery 的.position().offset()。但是reverse呢?

在现代浏览器的 Javascript 中是否可以使用 getElementsByPosition(x, y) 之类的函数?

【问题讨论】:

标签: javascript dom layout browser position


【解决方案1】:

您可能想看看document.elementFromPoint(x,y),它返回给定点的最顶层元素(除非您将其排除在目标之外,例如pointer-events)。

至于cross-browser compatibility,还可以,但是如果你想支持旧版浏览器,你必须小心,因为Safari 4.0和Opera 10.10使用了错误的坐标(他们想要绝对坐标,而不是相对)。

此方法对您的项目的一个缺点是它与视口相关,如果您检查当前不可见的内容,则返回null。来自W3C specs

elementFromPoint(x, y) 方法必须遵循以下步骤:

  1. 如果任一参数为负,则 x 大于视口宽度 不包括渲染滚动条的大小(如果有),或者 y 更大 比视口高度不包括渲染滚动条的大小 (如果有),或者没有与文档关联的视口,返回 null 并终止这些步骤。

  2. 如果视口中有一个布局框将成为 在坐标 x,y 处命中测试,返回关联的元素和 终止这些步骤。

  3. 如果文档有根元素,则返回根元素并 终止这些步骤。

  4. 返回空值。

【讨论】:

  • 这个跨浏览器兼容吗?
猜你喜欢
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多