javascript - HTML,如何在视口中获取准确的文本(不仅仅是与 clientRect 重叠的 p 标签)?
问题描述
我想获取当前屏幕上的文本。
这应该是可见的确切文本,与 html 标记边界无关。获取<p>
部分可见的标签是不够的。
示例输入:
<p>
AAAAAAA (lots of text, above current viewport)
BBBBBBB (lots of text, inside current viewport)
</p>
<p>
CCCCCCC (lots of text, inside current viewport)
DDDDDDD (lots of text, below current viewport)
</p>
期望的输出:
BBBBBBBCCCCCCC
解决方案尝试:
我只能找出如何对 dom 元素的级别进行可见性检查。所以我的解决方案尝试是添加很多虚拟元素:
<p>
<span>A</span><span>A</span><span>A</span><span>A</span><span>A</span><span>A</span>
</p>
在这一点上,我的问题变成了这个问题的重复:如何判断 DOM 元素在当前视口中是否可见?
然后很容易遍历 dom 元素,检查它们是否可见,如果是则使用它们的文本内容。
问题是文本真的很长,我想对单个单词的级别进行可见性检查。我创建了一个简单的测试用例:内部有 1000 个跨度的单个 p 标签。每个跨度都有一小部分随机文本。在我的旧 android 上,滚动非常缓慢。
解决方案
推荐阅读
- html - CSP 限制,但没有在 HTML 或 HTTP 标头中指定
- python - 使用 Python 更新 WikiData 属性
- php - 在 Symfony Routing Annotation 中指定自定义数据
- javascript - Safari 使用 React 和 Material-UI 渲染错误
- python - 在 DataFrame 上应用 SciPy stats.contingency 以找出数据的临界值和 p 值时出错
- r - 如何为列的第一次选择最大值
- sed - 无法使用 tr、sed 从字符串中删除空格
- python - 为什么 Python 用后来调整的副本替换早期定义的 Pandas 数据框?
- haskell - 是否有可以用来深入挖掘多维地图的镜头/光学器件?
- android - 如何通过单击我的 Android 应用程序中的按钮来创建 Google 电子表格?