document.createElement()创建unclosed标签?

时间:2010-06-04 19:20:36

标签: javascript firefox dom svg

这种情况发生在Firefox中,但不会发生在谷歌浏览器中。

我在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 个答案:

答案 0 :(得分:0)

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

编辑:Mozilla Developer Center documentation for innerHTML表示您不应该依赖于您从innerHTML中获取的内容,并建议将某些库作为专门用于XML的替换。