1

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 が必要なため、挿入したくありません。ユニコードの改行文字を使用しています&#x000A;。キャリッジリターン文字&#x000D;も同様の結果で試しました。適切な HTML ではないため、\n使用できません。insertHTML

execCommand が 1 回だけ実行されるようにする方法について、アイデアをお持ちの方はいらっしゃいますか?

4

0 に答える 0