2010-06-04 109 views
1

这发生在Firefox,而不是在谷歌浏览器。document.createElement()创建未封闭标签?

我创建一个SVG“图像”在SVG的Web canvas标签是这样的:

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有检查和修复标签的方法吗?

回答

0

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

编辑:Mozilla Developer Center documentation for innerHTML说,你不应该依赖于你回来了innerHTML的是什么,并提出了一些库,专门为XML使用替代品。

+0

我知道。尽管如此,它在HTML查看器中以第一种方式显示,而且默认实现不应该是“正确”的吗?如果这是有意的,这是不是意味着JavaScript DOM方法对于XHTML并不真正起作用? – colinmarc 2010-06-04 19:25:33

+0

该工具会显示这并不意味着有关数据将如何走出来的innerHTML的一切的好办法。 Firebug是一个与Firefox完全分离的项目。你究竟想要完成什么?你想确认这是否是一个错误?你想用innerHTML中的数据做些什么吗?这并不是说的innerHTML生成一个未关闭的标签,它是HTML不仅不需要/>它不允许,所以Firefox是从它的文字属性提供有效的HTML。 – lambacck 2010-06-04 19:34:55

+0

你的编辑引导我进入innerDom包,这是我想要的,我想。谢谢 – colinmarc 2010-06-04 19:50:16