the*_*orn 27 html5 internet-explorer svg
使用我认为非常标准的嵌入式svg:
<!DOCTYPE html>
<html>
<body style="padding:50px">
<svg width="100" height="100">
<circle cx="50" cy="50" r="20" />
</svg>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
IE(11)给我一个警告"HTML1500:标签不能自动关闭.使用明确的结束标签." (DevTools,Console选项卡).
确实,如果我<circle..改为:
<circle cx="50" cy="50" r="20"></circle>
Run Code Online (Sandbox Code Playgroud)
警告消失了,但这对我来说很奇怪..
IE devtools偶尔会发现真正的非闭合标记错误,因此看到它从这种噪声中变得无用时会很难过.
有没有办法让IE变得快乐,而不是在各处添加结束标签?
更新:请注意,问题是关于"外国元素",而不是"虚空元素"(http://www.w3.org/html/wg/drafts/html/master/single-page.html#elements-2).<svg>不是自我关闭的(它被定义为属于Container元素类别:http://www.w3.org/TR/SVG/struct.html#SVGElement).
<circle..被定义为基本形状元素(http://www.w3.org/TR/SVG/shapes.html#CircleElement),这意味着它是自动关闭的.在阅读html5规范的8.1.2时:
其开始标记被标记为自闭的外来元素不能包含任何内容(因为没有结束标记,因此不能在开始标记和结束标记之间放置内容).其开始标记未标记为自闭合的外部元素可以包含文本,字符引用,CDATA部分,其他元素和注释,但文本不得包含字符U + 003C LESS-THAN SIGN(<)或不明确的&符号.
看来(我)像它说的内部标签<svg>元素(即外来元素)是自动关闭,如果SVG规格的说,他们是和定义的开始标记(8.1.2.1)时,#6说,/在<tagname ... />是可选的,例如<br/>,但不是<circle ../>:
然后,如果元素是void元素之一,或者如果元素是外来元素,则可能存在单个U + 002F SOLIDUS字符(/).此字符对void元素没有影响,但在外部元素上,它将开始标记标记为自动关闭.
所以我认为该文件符合原样.我不确定使用结束</circle>标签是否符合要求.
小智 4
请参阅这个问题:( 非空)自闭合标签在 HTML5 中有效吗?
基本上,HTML5 并没有真正实现自闭合标签。相反,它具有空标签,例如<br>. 这也解释了为什么<script>当你使用外部js文件时不会自动关闭;<script>不是一个空元素。您编写的 SVG 实际上是 html,因此它必须遵循 HTML5 的规则,而不是 XML 的规则。
我认为您应该添加一个结束标签,以便您可以在控制台中获得更重要的警告/错误的好处。或者,如果您的页面是 XHTML,我相信您可以使用自闭圆标记。