Javascript 获取字符中某些元素的滚动位置

Javascript 获取字符中某些元素的滚动位置,javascript,html,Javascript,Html,假设我有一个元素,它包含一个很长的文本(实际用例会更长): 容器呈现了一个垂直滚动条。它是这样呈现的: +---------------------+ | ddddd eeeee fffff |^| | ggggg hhhhh iiiii | | | jjjjj kkkkk lllll ||| | mmmmm nnnnn ooooo ||| | ppppp qqqqq rrrrr | | | sssss ttttt uuuuu |v| +---------------------+ 我想要一个

假设我有一个
元素,它包含一个很长的文本(实际用例会更长):

容器
呈现了一个垂直滚动条。它是这样呈现的:

+---------------------+
| ddddd eeeee fffff |^|
| ggggg hhhhh iiiii | |
| jjjjj kkkkk lllll |||
| mmmmm nnnnn ooooo |||
| ppppp qqqqq rrrrr | |
| sssss ttttt uuuuu |v|
+---------------------+
我想要一个函数,告诉我
在哪里滚动。在本例中,最上面的文本是
ddddd
,其索引为18(
'aaaaa bbbbb ccccc ddd…')。indexOf('ddddd')==18
)。因此函数应该返回18

HTMLElement
只告诉我
px
中的
scrollTop
,而不是多少个字符。我该怎么办

注意事项:

  • 如果最上面的文本是部分显示的,它们可以被计算,也可以不被计算。任何行为都是可以接受的
  • 您可以假定
    仅包含纯文本。您可以假设没有应用像
    ::第一个字母
    这样的CSS规则
  • 您可能不认为单间距字体用作上述ascii艺术

不清楚你在问什么。是否要知道与查询匹配的第一个文本节点相对于直接父节点的垂直像素位置?还是对身体?你能澄清一下吗?@jsejcksn我做了一个镜像编辑来尽可能地澄清。希望它能起作用。如果你能发布一个实际的代码示例,也许可以提供一个答案。请参阅@jsejcksn im not requesting调试不工作的代码段。但是,询问获得结果的方法(可能是api,可能是算法)。我不认为一个可复制的例子会有帮助。我只是找到了这个问题:。答案可能是关于某些字符的位置。这可以通过二进制搜索来完成。至少这是一种可能的方式。
+---------------------+
| ddddd eeeee fffff |^|
| ggggg hhhhh iiiii | |
| jjjjj kkkkk lllll |||
| mmmmm nnnnn ooooo |||
| ppppp qqqqq rrrrr | |
| sssss ttttt uuuuu |v|
+---------------------+