JavaScript:在textarea中查找特定字符串的垂直像素位置

JavaScript:在textarea中查找特定字符串的垂直像素位置,javascript,scroll,textarea,Javascript,Scroll,Textarea,我有一个HTML文本区域作为运行在Chrome内部的小型文本编辑器的基础,其中包括搜索功能(因为我需要浏览器提供的搜索功能之外的搜索功能)。对于较长的文本,这意味着我需要JavaScript在选择找到的文本后滚动到正确的位置。通过计算字体的行高乘以找到的文本的行号(我通过计算换行数得到的行号),然后设置textareaElement.scrollTop。。。但仅当textarea设置为wrap=“off”时。当它包装时,正如我有时需要的那样,我不能简单地通过计算换行来计算行数,我的滚动位置算法将

我有一个HTML文本区域作为运行在Chrome内部的小型文本编辑器的基础,其中包括搜索功能(因为我需要浏览器提供的搜索功能之外的搜索功能)。对于较长的文本,这意味着我需要JavaScript在选择找到的文本后滚动到正确的位置。通过计算字体的行高乘以找到的文本的行号(我通过计算换行数得到的行号),然后设置textareaElement.scrollTop。。。但仅当textarea设置为wrap=“off”时。当它包装时,正如我有时需要的那样,我不能简单地通过计算换行来计算行数,我的滚动位置算法将关闭一点


如何才能找到所选文本的正确位置?

我已经解决了中日志控制台搜索功能的问题。“我的代码”将搜索结果包围在标签中,标签的样式属性在您浏览搜索结果时会发生更改。最初我在当前搜索结果span上调用了
scrollIntoView()
,但我认为我在某些浏览器中遇到了问题(例如,log4javascript支持ie5)最后根据span的
offsetLeft
offsetTop
属性以及容器的
scrollLeft
scrollTop
属性编写了我自己的滚动函数。我怀疑
scrollIntoView()
在Chrome中可以很好地工作,所以你只要使用它就可以了。

谢谢你的回答;scrollIntoView()看起来非常有趣。我必须承认,尽管我没有使用任何div或span元素,所以我认为它不起作用——我想滚动到视图中的只是大textarea元素中当前选定的文本部分……好的。我正在努力想办法实现你想要的。如果您的textarea使用固定宽度字体和固定数量的列,则可以使用该字体计算换行数。除此之外,我看不出有什么办法。@Phillip Lenssen:你可以用一个临时的跨距围绕当前选择,将其滚动到视图中,然后使用DOM操作将其删除,也许?