javascript - document.createElement() 创建未封闭的标签?

标签 javascript firefox dom svg

这种情况发生在 Firefox 中,但不会发生在 Google Chrome 中。

我在 svg-web Canvas 中创建了一个 SVG“图像”标签,如下所示:

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 有没有办法检查和修复标签?

最佳答案

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

编辑:Mozilla Developer Center documentation for innerHTML说您不应该依赖从innerHTML 中返回的内容,并建议使用一些库作为专门用于XML 的替代品。

关于javascript - document.createElement() 创建未封闭的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2977094/

相关文章:

javascript - 使用 date.js 将 ISO 8601 转换为特定格式

javascript - 选择跨越多个 div 问题

python - 无法在 Selenium 中找到元素

jquery - .change() 在 IE 6,7,8 中未在 DropDownList 上触发 - JQuery

javascript - 获取由javascript生成的其他页面的内容

javascript - 使用 Node.js 和 XPath 对 HTML 页面进行高性能解析

javascript - 如何替换jquery mobile中的li?

html - Firefox 记住错误的详细信息用户名

javascript - 使用 DOM 将 SVG 元素添加到现有 SVG

javascript - Highcharts - 使用选定的饼图切片获得 3d 效果