【发布时间】:2026-01-07 14:50:01
【问题描述】:
我有一个网页,它显示日志文件的最后1000 行,然后每隔x 秒通过AJAX 更新一次,加载新内容(如果有)并使用$('#log').append(new_data) 附加到textarea,一种tail -f。
当附加的行过多并且页面变得缓慢或无响应时,问题会在一段时间后出现。
所以我想将行数限制为 5000,所以这意味着我应该:
- 检索
new_data - 计算
overflow = 5000 - lines_ in_new_data - lines_in_textarea - 如果
overflow > 0从textarea中删除第一行overflow - 将 new_data 附加到文本区域
在我看来,这涉及split('\n') 和textarea 和new_data 值中的一个或多个split('\n'),然后使用数组长度和切片,但我想是否有更简洁或更好的方法来实现这一点。
【问题讨论】:
-
Textareas 实际上并没有将
'\n'显示为换行符。文本区域是否可调整大小?如果限制为字符数而不是行数,会简单得多。 -
赞成使用字符长度而不是行数。
-
我知道这会简单得多,但我希望尽可能以 linuxish 基于行的方式使页面正常工作。毕竟这是一个日志......即使有一些解决方法可以很容易地避免这将是非常丑陋的第一行 textarea 被截断......
-
@Matt:不,它不能调整大小,只是一个纯文本区域 80cols x 24rows
-
如果 textarea 限制为 80 列,那么当日志行包含超过 80 个字符时会发生什么情况?它是换行到下一行,还是溢出宽度?当你想删除多余的行时,你想把多余的字符算作一行的一部分吗?顺便说一句,某些浏览器将允许使用句柄调整任何文本区域的大小,除非您 explicitly disable it.
标签: javascript jquery textarea