如何解決 contenteditable 編輯框內使用 Shift+Enter 換行導致結構混亂的問題?

如何解決 contenteditable 編輯框內使用 Shift+Enter 換行導致結構混亂的問題?

巧妙解決contenteditable編輯框Shift+Enter換行問題

在使用contenteditable=”true”的編輯框時,Shift+Enter換行常常導致html結構混亂。本文提供一種有效的解決方案。

問題概述

考慮一個簡單的可編輯div:

<div contenteditable="true" id="editable" oninput="inputText()" onkeydown="keyDown(Event)"></div>

當用戶使用Shift+Enter換行,內容結構可能變得雜亂無章。

解決方案

關鍵在于重寫onkeydown事件處理函數,攔截Shift+Enter組合鍵:

function keyDown(event) {     if (event.shiftKey && event.keyCode === 13) {         event.preventDefault(); //阻止默認行為         document.execCommand('insertParagraph'); //插入段落         return false; //停止事件傳播     }     //其他按鍵處理(例如,確保文本在<p>標簽內)     document.execCommand('formatblock', false, '<p>');  }  function inputText() {     // ... (原代碼保持不變) }

改進后的代碼:

  1. 檢測Shift+Enter組合鍵 (event.shiftKey && event.keyCode === 13)。
  2. event.preventDefault()阻止瀏覽器默認的換行行為。
  3. document.execCommand(‘insertParagraph’)插入一個新的

    段落,保持結構整潔。

  4. return false 停止事件進一步傳播。
  5. 保留原有formatblock命令,確保內容始終在

    標簽內。

測試驗證

此方案已在chrome 120.0.6099.201 (64位)版本測試通過,有效解決了Shift+Enter換行導致的結構混亂問題。

通過以上方法,您可以輕松避免contenteditable編輯框中Shift+Enter換行帶來的結構問題,確保編輯內容的HTML結構規范。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享