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/pUI の配置の問題が発生する可能性があります

4

2 に答える 2

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 に答える