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

document.createElement()是否创建未关闭的标记?

  •  1
  • colinmarc  · 技术社区  · 16 年前

    这在Firefox中发生,但在Google Chrome中没有发生。

    我在SVG Web画布中创建了一个SVG“image”标记,如下所示:

    im = document.createElementNS(svgns, 'image');
    im.setAttributeNS(xlinkns, 'href', g.href);
    canvas.appendChild(im);
    

    如果我查看Firebug或Chrome的调试器,SVG会像这样显示自我关闭:

    <image xlink:href="..." />
    

    但如果我随后打印svg元素的父元素 innerHTML ,返回:

    <svg><image xlink:href="..."></svg>
    

    请注意,图像标记现在未关闭,这会导致行中出现错误。我发现了一个错误,还是我做错了什么?而且,可能更难,在javascript中有没有一种方法可以检查和修复标记?

    1 回复  |  直到 16 年前
        1
  •  0
  •   lambacck    16 年前

    HTML不需要空标记来结束。即使文档是XHTML,我也不确定它是否会从InnerHTML属性返回有效的XML。

    编辑: Mozilla Developer Center documentation for innerHTML 说您不应该依赖于从innerhtml中得到什么,并建议使用一些库作为替换,专门用于XML。