contentEditable DIV で小さな RTE に取り組んでいます。Enter キーが押されたときと選択された場所を監視するキープレス イベント ハンドラーを DIV にアタッチしました。テキスト ノード内にある場合は、新しい行を挿入しています。ただし、このコードにはバグがあり、1 つではなく 4 つの改行が挿入されることがよくあります (カーソルが以前あった場所に戻るには、元に戻すを 4 回押す必要があります。そのため、execCommand が複数回起動していると思います)。一方、新しい行を挿入するには、ENTER キーを 2 回押す必要がある場合があります。
Enter キーが押されたと判断された後の keypress イベント ハンドラーのコード スニペットを次に示します。
if(selection.focusNode.nodeType!=3){ return; }
ev.preventDefault();
var HTML='
';
toolbar.target.ownerDocument.execCommand('insertHTML',false,HTML);
execCommand を使用して、ブラウザーの元に戻す動作を維持したいと考えています。<br>
この挿入はテキストノードでのみ行われ、後処理の目的でテキストノードに<br>
's またはその他のブロックタイプのタグの代わりに \n が必要なため、挿入したくありません。ユニコードの改行文字を使用しています

。キャリッジリターン文字
も同様の結果で試しました。適切な HTML ではないため、\n
使用できません。insertHTML
execCommand が 1 回だけ実行されるようにする方法について、アイデアをお持ちの方はいらっしゃいますか?