【发布时间】:2011-09-07 09:39:31
【问题描述】:
带有“实时预览”的在线编辑器:左侧有一个文本区域,右侧有一个预览 div。每当文本区域发生变化时,预览就会更新。
这适用于小型文档;然而,对于非常长的文档,它会变得迟缓,因为预览中有许多不断重绘的 DOM 元素。
最好只发送到预览,文本区域中当前可见的部分(因为它是需要预览的部分)。
有一种启发式方法可以获取文本区域的第一条可见行:
- 确定文本区域的当前滚动偏移量:
offset = scrollTop / scrollHeight
(0 - 文本区域中可见的第一行是:
(总行数)x 偏移量
但这仅适用于“短”行,即不换行的行。一般来说,文本区域中的“行”数不是换行数;一条长线,没有换行符,换行并可能占用许多“行空间”。
可以尝试计算一行占用的“行间距”的平均数量(换行符之间的平均字符数、文本区域的宽度、字体的大小......),但这非常不精确。
有没有办法知道文本区域中第一个和最后一个可见字符的位置?
【问题讨论】:
-
根据滚动条的位置,您还可以部分显示线条(即线条字符的底部几个像素)。
标签: javascript textarea