【发布时间】:2012-10-15 00:33:17
【问题描述】:
我有一个用于编辑大量文本的文本区域很长的页面。通常,当您键入时,当插入符号接近文本区域的底部时,页面会自动滚动以使插入符号始终保持在视口内(Firefox 一次滚动一行,Chrome 会将插入符号滚动到视口)。
我的问题来自这样一个事实,即我正在根据用户键入的内容以编程方式更改文本区域的内容。在某些情况下,这涉及添加额外的内容,从而将插入符号推到视野之外。
只要用户点击一个键,自动滚动就会启动,插入符号会滚动到视图中——但不是之前,所以当用户键入时,他们会看不到插入符号。我曾希望我可以简单地触发 textarea 上的关键事件让浏览器自动滚动,但触发的事件并不能完全模拟用户行为,我也没有得到响应。
我现在能看到的唯一解决方案是尝试通过以下方式获取插入符号的 XY 坐标:
- 查找插入符号的字符位置。
- 构建一个 div,在插入符号位置使用标记来镜像 textarea 的内容。
- 测量标记的位置。
有没有更简单的方法来做到这一点?
【问题讨论】:
标签: javascript html textarea