代码之家  ›  专栏  ›  技术社区  ›  Philipp Lenssen

JavaScript:将文本快速插入长文本区域

  •  0
  • Philipp Lenssen  · 技术社区  · 16 年前

    我正在创建一个基于HTML文本区域的纯文本编辑器来编辑我的脚本(使用Mozilla Prism+a localhost install/webserver)。到目前为止,它工作得很好,但是当我想在光标位置插入一些东西时,当文本区域中有很多文本时,它在Firefox中会变慢(Chrome工作得很好)。E、 g.在文本区域填充133k时,大约需要1秒执行插入4个空格的操作。

    我已经拥有并使用elm.selectionStart和elm.selectionEnd。基于这些,我然后复制文本,操纵它,并将值设置回文本区域——也许这就是造成瓶颈的原因(我正在使用类似的方法 as answered on this site

    它不一定需要交叉浏览。。。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Marius    16 年前
        2
  •  0
  •   fregante    7 年前

    有一个API可以替换选定的文本: textarea.setRangeText('text')

    下面是一个演示:

    const textarea = document.querySelector('textarea');
    textarea.addEventListener('click', () => {
      textarea.setRangeText('WOW');
    });
    <textarea rows="10" cols="40">Click anywhere or select any text in here. It will be replaced by WOW</textarea>

    还有 document.execCommand('insertText') undo insert-text-textarea

    推荐文章