糊 结束标记而没有CONTENTEDITABLE产卵的开口p标签(Paste

clo

2019-11-01 05:09发布

我有一个DIV CONTENTEDITABLE:

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

我想新的段落,以形成当我按下Enter键,并为我拦截ENTER的keydown和替换通过的HTML代码中插入的默认操作:

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

我希望的是,当我按下回车键, </p><p><br/>将关闭现有的段落,并打开一个新的段落。 所以,如果我打字:“世界你好” + 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代码?

我使用铬和jQuery 1.7.2。

Answer 1:

编辑发生在文档对象模型(DOM)。 HTML标签并不真正存在的编辑器。 该HTML被解析成DOM。 HTML标签再次产生时,DOM被序列化。 因此,不正确的HTML片段不能没有后果粘贴。



文章来源: Paste

closing tag without spawning an opening p tag in contenteditable