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

Jam*_*mie 24 html javascript

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

<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>
Run Code Online (Sandbox Code Playgroud)

这涉及多个方面:

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
Run Code Online (Sandbox Code Playgroud)

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

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

aar*_*ron 29

您可以使用范围来查找元素的位置.快速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();
Run Code Online (Sandbox Code Playgroud)

编辑:修改为打印出匹配的rect的坐标

  • 我的不好,我应该在我的例子中更清楚:客户端rects包含点击发生位置的客户端坐标.这可以很容易地用于定位特定字符或字符集. (2认同)

glo*_*mad 12

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

  • 不幸的是,由于字距调整,在字符周围插入"span"标签实际上可能会影响其坐标.例如,请看:https://jsfiddle.net/4p4uw94h/ (2认同)
  • @ithcy第二个最受欢迎的答案(范围)似乎是要走的路. (2认同)