IE在渲染时添加额外的HTML标记

时间:2012-11-14 14:02:41

标签: html internet-explorer render

我有以下HTML标记作为输入粘贴到IE浏览器上代替浏览器上的选定内容:

<span id='fs_892_3006_0' class='ParaMarked' FactType='NonNumeric' onclick='OnSpanClick("fs_892_3006_0", event)' IsFactMarked='true'>
    <fact id='892_3006_0' keyword=''>
        <P style="margin: 0pt 0pt 10pt; line-height: 115%; font-size: 11pt;">
            <SPAN style="font-family: Calibri; font-size: 11pt;">THIS IS A TEST CONTENT 1</SPAN>
        </P>
    </fact>
</span>

但是,当呈现HTML时,IE会在此HTML周围添加额外的标记,如下所示:

<p style="margin: 0pt 0pt 10pt; line-height: 115%; font-size: 11pt;">
   <span style="font-family: Calibri; font-size: 11pt;">
        <span id="fs_892_3006_0" class="ParaMarked" onclick='OnSpanClick("fs_892_3006_0", event)' IsFactMarked="true" FactType="NonNumeric">
          <fact id="892_3006_0" keyword="">
</p><p style="margin: 0pt 0pt 10pt; line-height: 115%; font-size: 11pt;"><span style="font-family: Calibri; font-size: 11pt;">THIS IS A TEST CONTENT 1</span></p></fact></span></span>

我尝试过以下技术将HTML粘贴到浏览器上,但结果相同:
注意:“markedText”是包含如上所述的HTML输入的javascript变量

 1. pasteHTML(markedText):http://msdn.microsoft.com/en-us/library/ie/ms536656(v=vs.85).aspx
 2. Rangy图书馆:
      var sel = rangy.getSelection();
      var range = sel.getRangeAt(0);
      range.deleteContents();
      var node = range.createContextualFragment(markedText);
      range.insertNode(节点);

对此的任何指示都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

跨度内的p可能不起作用,因为它是内联元素中的块级元素。

有些浏览器会通过将内联元素包装在块级元素(默认为'p')中来“修复”此问题,并继续使用其余的标记。