以下问题让我感到困惑。我知道他们有关系,但是......
我已阅读此old链接,但我完全感到困惑...因为Mozilla说要动态修改内联SVG,需要编写脚本this方式" - 最后,如何动态修改内联SVG(如果HTML 5不支持名称空间)?
<小时/> 详情 -
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello-SVG</title>
</head>
<body>
<svg width="200" height="200">
<rect x="0" y="0" width="100" height="100" fill="blue"></rect>
</svg>
</body>
</html>
以上代码是在HTML 5中呈现rect
(使用SVG)的正确方法。现在,要使用JavaScript修改SVG,Mozilla建议使用this API。我的问题是,如果HTML 5不支持名称空间,那么这样做的重点是什么?对于这种情况,浏览器会自动切换到(X)HTML 5吗?
我看了this对SO的评论,我发现它最接近我正在寻找的答案 -
我猜HTML 5 SVG情况基本上是#34;没有命名空间的SVG在解析过程中会添加名称空间(但之后它就像(X)HTML之前的那样)&#34;。
答案 0 :(得分:26)
HTML5定义了HTML,XHTML和DOM。
DOM可识别名称空间。使用DOM方法时,必须考虑每个元素所在的命名空间,但默认为HTML(http://www.w3.org/1999/xhtml
)命名空间。
HTML和XHTML是通过解析转换为DOM的序列化。
XHTML是名称空间感知的,XHTML文档根据XML规则应用名称空间,因此所有名称空间必须明确地分配给每个元素。使用XML解析器将XHTML转换为DOM。
HTML也可识别名称空间,但名称空间是隐式分配的。使用HTML解析器将HTML转换为DOM,知道哪些元素位于哪个命名空间中。也就是说,它知道<div>
位于http://www.w3.org/1999/xhtml
命名空间中,而<svg>
位于http://www.w3.org/2000/svg
命名空间中。像<script>
这样的元素可以放在http://www.w3.org/1999/xhtml
或http://www.w3.org/2000/svg
命名空间中,具体取决于它们在HTML代码中出现的上下文。
HTML解析器知道HTML elements
,SVG elements
和MathML elements
以及没有其他。没有选项可以使用其他名称空间中的元素,既不隐式也不明确。也就是说,xmlns
属性没有效果。