从contenteditable div检索所选HTML

从contenteditable div检索所选HTML,html,contenteditable,Html,Contenteditable,我试图在特定情况下从contenteditable div获取所选HTML。首先让我告诉你,我阅读了来自和的问题 我正在使用Redactor 因此,我尝试了以下函数来检索选定的HTML: function getSelectionHtml() { var html = ""; if (typeof window.getSelection != "undefined") { var sel = window.getSelection(); if (s

我试图在特定情况下从contenteditable div获取所选HTML。首先让我告诉你,我阅读了来自和的问题

我正在使用Redactor

因此,我尝试了以下函数来检索选定的HTML:

function getSelectionHtml() {
    var html = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var container = document.createElement("div");
            for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                container.appendChild(sel.getRangeAt(i).cloneContents());
            }
            html = container.innerHTML;
        }
    } else if (typeof document.selection != "undefined") {
        if (document.selection.type == "Text") {
            html = document.selection.createRange().htmlText;
        }
    }

    return html;
}
函数getSelectionHtml(){ var html=“”; if(typeof window.getSelection!=“未定义”){ var sel=window.getSelection(); 如果(选择范围计数){ var container=document.createElement(“div”); 对于(变量i=0,len=sel.rangeCount;i 现在的情况是这样的:我有一个类似斜体的文本,然后我选择它,修改DOM使它看起来也粗体

  • 当我选择文本并将其加粗时,我得到的HTML如下所示:

    <span class="bold">​</span><strong><span class="bold" data-redactor="verified" data-redactor-inlineMethods="">fermentum</span><span></span></strong>
    
    发酵液
    
  • 我单击页面中的其他位置。文本被取消选择

  • 当我第二次选择文本并将其设置为斜体时,我得到以下结果:

    ​发酵液

  • 正如你所看到的,第二次我没有得到允许我确定它是粗体的元素

    所以,它在InternetExplorer10上不起作用。 它在Firefox上工作。 它在Chrome上不起作用


    是否有一种有效的方法可以从除此之外的contenteditable div获取所选HTML?

    听起来您希望HTML包含所有样式信息,包括从包含所选内容的元素继承的样式。是这样吗?你到底需要做什么?嗨,蒂姆,谢谢你的回答。我获取HTML,使用字符串将其包装在一个div中,并将该字符串传递给jQuery进行解析。然后我递归地遍历它,收集可能影响文本属性的所有元素和样式(例如,表示粗体,斜体,字体大小:12px表示字体大小,等等)。因此,主要思想是了解contenteditable div中应用于特定文本的所有样式/标记,以便在工具栏中激活它们@限时