4

我有这个从富文本编辑器调用的函数来添加选择中的内容。

问题是,如果我使用 html 标签传递,它就不能正常工作<center>some</center>

它不是创建内容中心,而是输出 HTML 和文本

function addTextAtCursorPostion(text) {
var sel, range, html;
if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
        range = sel.getRangeAt(0);
        range.deleteContents();
        range.insertNode(document.createTextNode(text));
    }
}

document.createTextNode仅需要文本。有没有办法可以处理文本和 html?

或者我们是否有任何可以在其中放置 html 的虚拟/空节点?

使用 Firebug 获取的富文本编辑器 innerHTML 的示例内容

<div contenteditable="true" id="editor">
      <font face="Comic Sans MS">Go ahead</font>…
       <a href="www.stackoverflow.com"><b><i>Welcome User</i>
  **ADD HTML FORMATTED STRING HERE OR POSITION AT CURSOR**
 </b></a><br>
</div>

如果我用我的 htmlText 包装我span/div/p可能会遇到 UI 对齐问题

4

2 回答 2

0

我认为您不能使用文本节点呈现 HTML。您需要创建一个元素并使用它innerHTML来插入代码。

var el = document.createElement('span');
el.innerHTML = text;
于 2013-10-21T15:19:15.680 回答
0

未经测试,但我认为您可以将 HTML 字符串插入自定义 HTML 元素(除了全局添加的样式外,不会带来任何继承样式),然后将其插入范围。

function addTextAtCursorPostion(text) {
 var sel, range, html;
 if (window.getSelection) {
   sel = window.getSelection();
   if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      range.insertNode(document.createElement("range").innerHTML=text);
  }

}

于 2013-10-21T15:21:04.273 回答