javascript - createElement 与 createElementNS

标签 javascript html dom namespaces

这两者之间的真正区别是什么?我的意思是真正的,本质上的区别。 常规 createElement 的 future 是什么?

Svg 是 xml,不是 html。我明白了。所以我们使用 createElementNS(ns_string, 'svg') 然后是 setAttributeNS(null,,)。为什么? 为什么不 setAttributeNS('my_ns',,)

为什么 ns_string 必须是 http://www.w3.org/2000/svg 而不是一些随机字符串?如果只有一个命名空间,命名空间有什么用?

ns 在常规 html 中的用途是什么?我是否应该将现有代码中的所有 createElement 实例更改为 createElementNS

我正在阅读 DOM-Level-2规范但我还是很困惑。

最佳答案

要了解命名空间试图解决的问题,请考虑文件扩展名。 3 个字母的文件扩展名在描述文件内容方面做得非常糟糕。它们是模棱两可的,不携带版本信息。 XML 命名空间使用更大空间的字符串、URI 来解决相同的问题,并使用短前缀,以便您可以在同一文档中简洁地混合多种 XML。

What's the purpose of namespace if there is only one name space?

有许多命名空间用于标识不同类型的 XML 以及这些类型的不同版本。

SVG 和 MathML 是两种 XML,每一种都有自己的命名空间,可以嵌入到 HTML5 中,它们通常使用另一种 XML 命名空间 XLink。许多其他具有相应命名空间的 XML 模式用于在客户端和服务器之间传递消息以及用于数据存储。

XHTML 试图将 HTML 表示为有效的 XML。它有自己的命名空间。

So we use createElementNS(ns_string, 'svg') And then setAttributeNS(null,,). Why? Why not setAttributeNS('my_ns',,)???

当使用带有命名空间 URI 的 createElementNS 时,您可能应该尝试始终将 setAttributeNS 与命名空间 URI 一起使用。

XML 是在多个步骤中定义的。该规范的第一个版本没有提及 namespace ,但保留了足够的语法,因此可以通过使用前缀和特殊的 xmlns 属性在没有 namespace 的 XML 之上指定具有 namespace 的 XML。 XML specification说:

"The Namespaces in XML Recommendation [XML Names] assigns a meaning to names containing colon characters. Therefore, authors should not use the colon in XML names except for namespace purposes, but XML processors must accept the colon as a name character."

XML namespace 让 XML 处理应用程序知道它们正在处理什么,并允许在同一个文档中混合使用多种 XML。

Why ns_string must be "http://www.w3.org/2000/svg"

这包括 SVG 版本标准化的年份,即 2000 年,因此它包含有用的信息。

当与 xmlns:svg 一起使用时,它还让浏览器知道 svg: 前缀表示 SVG 而不是 XML 的其他方言。

关于javascript - createElement 与 createElementNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173217/

相关文章:

javascript - 计算 AnalyserNode 的 smoothingTimeConstant

javascript - 在带有视频的函数中使用 Canvas 和 Drawimage

javascript - 在 Firebase Cloud Functions 中创建 PDF

html - 使用 Twitter Bootstrap 的响应式行

javascript - 跨浏览器 javascript 加载回调 : Is there a better way than using iframes?

javascript - JavaScript 中的值存储在哪里?

html - 表格样式的单元格

javascript - 向用户填写表单的每个输入字段添加分数并显示它

javascript - document.getElementById ("someid' ).innerHTML = "HI";不适合我

javascript - 从一个 div 获取所有子 div id