contenteditable 可编辑区域实现换行的两种方法

作者:百宝袋

时间:2026-11-01

浏览:585

本文介绍在 contenteditable 可编辑区域中实现换行的两种常见方式。第一种方法通过监听键盘事件手动插入 br 标签,需注意末尾连续换行需添加两个 br 才能生效。第二种方法使用已废弃但浏览器仍支持的 document.execCommand('insertLineBreak') 命令。

文章目录

在 HTML5 中,设置 contenteditable 属性为 true 的元素允许用户直接编辑内容。当业务需求要求在可编辑区域内自定义插入换行符时,通常涉及对 br 标签的处理。

第一种实现方式是通过代码显式添加换行符 br 来实现换行效果。

在实现过程中,若在文本末尾进行换行操作,需要特别注意:必须连续插入两个 br 标签。如果只添加一个 br,第一次操作时往往无法产生预期的换行视觉效果。

<div
   class="inputContent scroll"
   contenteditable="true"
   @keydown="inputContent_keydown"
></div>
function inputContent_keydown(e) {
        // 1.快捷键判断 回车加ctrl
         if( e.keyCode==13 && e.ctrlKey) { 
           
                 if (document.selection) {//IE9以下
                 document.selection.createRange().pasteHTML(content);
             } else {
                 let doc_fragment = document.createDocumentFragment();
                 // 创建br
                 let new_ele = document.createElement('br');
                 doc_fragment.appendChild(new_ele);
                 // 获取当前选择
                 let range = window.getSelection().getRangeAt(0);
                 range.deleteContents();
                 // 判断是否是最后一个元素如果是多加一个
                 if (!hasNextSibling(range.endContainer) && range.startOffset  == range.startContainer.length) {
                     let extra_break = document.createElement('br');
                     doc_fragment.appendChild(extra_break);
                 }
                 range.insertNode(doc_fragment);
                 //创建新范围
                 range = document.createRange();
                 range.setStartAfter(new_ele);
                 range.collapse(true);
                 //插入
                 let sel = window.getSelection();
                 sel.removeAllRanges();
                 sel.addRange(range);
             }
         }
     }
  
  function hasNextSibling(node) {
         if (node.nextElementSibling) {
             return true;
         }
         while (node.nextSibling) {
             node = node.nextSibling;
             if (node.length > 0) {
                 return true;
             }
         }
         return false;
     }

第二种实现方式是利用 document.execCommand 方法。

尽管该方法已被标记为废弃,但在大多数现代浏览器中仍然有效。具体调用方式如下: document.execCommand('insertLineBreak')

以上是关于 contenteditable 可编辑区域设置换行的详细内容,更多关于 contenteditable 可编辑区域设置换行的资料请关注本站其它相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章