代码之家  ›  专栏  ›  技术社区  ›  Warrior

使用javascript pasteHTML函数插入自定义html标记

  •  1
  • Warrior  · 技术社区  · 15 年前

    我正在使用可编辑的iframe创建自定义的所见即所得(WYSIWYG) <ino> 到选定的文本,如 <info> 这里有些内容 </info> 。我用过这个代码

    Editor = document.getElementById('iframe_id').contentWindow.document;
    var tag='info'
    var range = Editor.selection.createRange();
    if (range.pasteHTML)
    {
     var content=Editor.selection.createRange().htmlText
     content1="<"+tag+">"+content+"</"+tag+">"
        range.pasteHTML(content1);
    }
    

    此代码用于IE.In content1 我得到了正确的文本。但是在输出中,起始标记 <信息> 无法获取。我已使用 document.createElement('info'); 我怎么能解决这个问题。提前谢谢。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Tim Down    15 年前

    没有HTML <info> 元素。这很可能是代码无法工作的原因。

    如果您真的需要这样做(我不明白为什么),可以利用IE允许您使用 document.createElement() 然后执行如下操作,粘贴到标记元素中,定位 <信息> 元素,该元素在marker元素之前包含原始TextRange内容,然后移除标记:

    var range = Editor.selection.createRange();
    var info = Editor.createElement("info");
    info.innerHTML = range.htmlText;
    var id = "some_random_id";
    range.pasteHTML('<span id="' + id + '"></span>');
    var span = Editor.getElementById(id);
    span.parentNode.insertBefore(info, span);
    span.parentNode.removeChild(span);
    
        2
  •  1
  •   Pau    15 年前

    正如它在这个链接中所说: http://msdn.microsoft.com/en-us/library/ms536656%28VS.85%29.aspx pasteHML只接受HTML标记。 你可以用 内部HTML 取而代之的是属性:

    range.innerHTML = content1;
    
    推荐文章