在插入符号位置插入HTML而不创建对象

Posted

技术标签:

【中文标题】在插入符号位置插入HTML而不创建对象【英文标题】:insertHTML in the caret position without creating object 【发布时间】:2014-12-20 04:58:42 【问题描述】:

我有内容可编辑的 div,并且里面有文本。

<div contenteditable="true"><span> Some text.. </span></div>

我需要插入代替插入符号关闭和打开跨度标签。喜欢:

<div contenteditable="true"><span> Some </span><span> text.. </span></div>

我尝试通过 inserthtml 来实现:

document.execCommand('insertHTML', false, '</span><span>');

它在 Crome 中工作,但 Firefox 生成 span 对象并在此处插入(插入有效的 html)。事实证明:

<div contenteditable="true"><span> Some <span></span> text.. </span></div>

有谁知道如何在 contenteditable div 中拆分 span 标签?提前致谢

【问题讨论】:

那么,你真正想要的是将每个单词分成它自己的&lt;span&gt; 标签?你可以使用第三方库,比如 jQuery 吗? @TomasLycken,哦。我不想将每个单词分成&lt;span&gt; 标签。这就是我需要的:jsfiddle.net/cwm3tbtu 但它在 Firefox 中不起作用。 【参考方案1】:

您可以只使用 innerHTML 属性插入任何 HTML 代码,这是一个使用 javascript 的示例:

document.getElementById("myDiv").innerHTML = "<span>Here is the new Content!</span>";

然后给你的 div id="myDiv"

【讨论】:

我需要将插入符号保留在同一个位置。在这种情况下,插入符号会跳到末尾 @VasyaShmarovoz 我真的不明白你的意思,但你也可以给跨度元素一个 id 并在跨度内插入带有 innerHtml 的文本,如果这是你要求的? @VasyaShmarovoz 是的,事实上,这还不够清楚,但您只需要最初在要添加内容的地方放置一个空 div 并使用 innerHTML 来填充它。 @chsdk,如何在有插入符号的地方划分跨度? @VasyaShmarovoz,使用JavaScript String split() Method here is an example 来划分跨度,但获得插入符号的位置是最重要的。看看这里,有一些问题:First和Second。

以上是关于在插入符号位置插入HTML而不创建对象的主要内容,如果未能解决你的问题,请参考以下文章

DOM节点对象之创建和插入节点示例

Word 2007插件中的插入符号位置

如何在django创建模板中创建对象时自动插入当前用户?

在文本区域中获取插入符号 XY 坐标 [重复]

如何在不插入模型对象的情况下使用它? [复制]

在 html 文本框中设置键盘插入符号位置