如何获取元素中文本的位置?

时间:2011-02-28 14:54:27

标签: javascript html

如果我有一个元素,例如:

<p>Lorem ipsum dolor sit amet, ante risus massa adipiscing quisque quis. At mauris tellus in, sed vehicula integer fermentum rhoncus at faucibus, in vitae purus. Maecenas in vel ligula orci tellus ac, fringilla conubia lorem elit. Dui nulla sodales morbi vel. Massa sed viverra. Maecenas imperdiet donec urna a, ligula sed</p>

这是多行:

Lorem ipsum dolor sit amet, ante risus massa adipiscing
quisque quis. At mauris tellus in, sed vehicula integer
fermentum rhoncus at faucibus, in vitae purus. Maecenas
in vel ligula orci tellus ac, fringilla conubia lorem
elit. Dui nulla sodales morbi vel. Massa sed viverra.
Maecenas imperdiet donec urna a, ligula sed

是否可以使用Javascript查找文本中特定字符的位置(x,y坐标)?如果没有,我可以获得文本中每一行的y位置吗?

请注意:我的应用中的<p>标记中有很多文字,因此在每个字符/单词周围添加<span>将会处理太多。< / p>

3 个答案:

答案 0 :(得分:24)

您可以使用范围来查找元素的位置。快速jsfiddle:https://jsfiddle.net/abrady0/ggr5mu7o/

var range = document.createRange();
range.setStart(parentElt, start);
range.setEnd(parentElt, end);
// These rects contain the client coordinates in top, left
var rects = range.getClientRects();

编辑:修改后打印出匹配矩形的坐标

答案 1 :(得分:12)

如果您知道文本中字符的字符串位置,则可以将字符包装在&lt; span&gt;中。或具有ID的类似元素,并找到该元素的x,y坐标。最简单的方法是使用jQuery或其他库,请参阅this答案,了解跨浏览器,无库方法。

答案 2 :(得分:4)

我得到的理念是 - 获取所有文本,将所需的子字符串打包到span-s中,替换element的innerHTML,并获取span-s的位置

相关问题