在 contenteditable 元素中,当使用命令 insertHTML 调用 execCommand 时,如果选择位于节点内,命令将展开插入的 html 段周围的 div 标记。
示例 HTML 代码块如下:
<div id="editable" contenteditable="true">
<div>Some text</div>
<div>Yet another</div>
<div>and other</div>
</div>
<input id="insert" type="button" value="Insert Segment">
并让javascript处理插入如下
$('#insert').on('mousedown', function (e) { //that is to save selection on blur
e.preventDefault();
}).on('click', function () { // this inserts the sample html segment
document.execCommand('insertHTML', false,
'<div class="new-segment">Text inside Segment</div>');
});
http://jsfiddle.net/TE4Y6/上的实时示例遵循以下场景:
- 将插入符号放在所有内容的末尾,按回车键创建一个新行,然后按“插入段”
结果:带有灰色背景的新 div 包含插入的“文本段内”
- 将插入符号放在前三行中的任何一个内部,按“插入段”
结果:它只插入不包围 div 的段的内容
预期:灰色背景的新 div 包含插入的“文本段内”
- 将插入符号放在前三行中的任何一行的末尾,按“插入段”
结果:它只插入不包围 div 的段的内容
预期:灰色背景的新 div 包含插入的“文本段内”
- 将插入符号放在前三行中的任何一行的末尾,按回车键创建一个新行,然后按“插入段”
结果:带有灰色背景的新 div 包含插入的“文本段内”
我试图<br>
在插入段之前自动插入它虽然插入了冗余空间,但它修复了第 3 步。
你有什么建议吗?