0

私はcontenteditabledivを持っています:

<div id="result" class="content" contenteditable="true"><p><br/></p></div>

ENTERを押したときに新しい段落を形成したいのですが、そのためにENTERキーダウンをインターセプトし、デフォルトのアクションをhtmlコードの挿入に置き換えます。

$(".content").on("keydown",function(e){if(e.which == 13) { e.preventDefault(); pasteHtmlAtCaret("</p><p><br/>");}});

ENTERを押す</p><p><br/>と、既存の段落が閉じて新しい段落が開くことを期待していました。したがって、「helloworld」+ ENTERと入力すると、次のようになります。

<p>hello world</p><p><br/></p>

あなたが作品を認識することができる場所</p><p><br/>。しかし、私は別の振る舞いを観察します。私は得る:

<p>hello world<p></p><p><br></p></p>

したがって、最初のタグが</p>開始タグを生成し、タグ<p><p>直前に<br/>一致する終了pタグが生成されたようです。それは私のブラウザがラッピングの存在を無視することを意味します<p></p>か?p小さなHTMLコードを挿入するときに、新しいタグが生成されないようにするにはどうすればよいですか?

ChromiumとjQuery1.7.2を使用しています。

4

1 に答える 1

2

編集は、ドキュメントオブジェクトモデル(DOM)で行われます。HTMLタグは、実際にはエディターに存在しません。HTMLはDOMに解析されます。DOMがシリアル化されると、HTMLタグが再度生成されます。したがって、不適切なHTMLフラグメントは、結果なしに貼り付けることはできません。

于 2012-11-17T14:30:40.920 に答える