You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

textarea开启自动高度后光标跳变问题及解决方案咨询

解决textarea自动高度导致的光标跳动问题

你的问题出在自动高度计算时的布局突变:当前代码在input事件里先把textarea高度设为0,再重新计算设置高度,这会触发元素快速收缩再展开,导致浏览器重新计算光标位置,最终出现跳动。

修复方案:记录并恢复光标位置

修改#handleTextareaInput函数,在调整高度前保存光标状态,调整后恢复,就能避免偏移:

#handleTextareaInput = () => {
  // 保存当前光标选中范围
  const start = this.#textarea.selectionStart;
  const end = this.#textarea.selectionEnd;

  // 计算目标高度,直接基于scrollHeight,无需先重置为0
  const targetHeight = Math.max(this.#minHeightTA, this.#textarea.scrollHeight) + 'px';

  // 仅当高度变化时更新,减少不必要的重排
  if (this.#textarea.style.height !== targetHeight) {
    this.#textarea.style.height = targetHeight;
  }

  // 恢复光标位置
  this.#textarea.setSelectionRange(start, end);
}

额外优化点

  1. 移除不必要的高度重置:原代码中this.#textarea.style.height = 0是多余的,scrollHeight已经能准确获取内容的实际高度,直接基于它计算即可。
  2. 增加高度变化判断:只有当目标高度和当前高度不一致时才更新,减少浏览器的重排操作,提升性能。

内容的提问来源于stack exchange,提问作者Jul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:27:41