
在 html 中,普通元素(如 ``)的 `tagname` 返回大写(如 `"a"`),而 svg 元素(如 `` 在 `
HTML 和 SVG 在浏览器中的处理机制本质不同:HTML 使用不区分大小写的解析器,其元素名在 DOM 中统一规范化为大写(例如
当 SVG 被内联嵌入 HTML 文档(如通过
可通过以下代码验证该行为:
HTML Link
⚠️ 注意事项:
- 此行为与浏览器是否“支持 SVG”无关,而是由文档类型和命名空间触发的标准化解析流程;
- 不要依赖 tagName 进行大小写不敏感的元素判断,推荐使用 localName(始终小写)或 nodeName(同 tagName,但更语义准确),或直接用 element instanceof SVGAElement 等类型检测;
- 在 XHTML(真正的 XML MIME 类型)文档中,所有元素(包括 HTML 类元素)的 tagName 都将保持原始大小写,进一步印证该机制源于 XML 解析上下文。
简言之:tagName 的大小写表现不是 bug,而是 DOM 规范对 XML 与 HTML 双模兼容的设计体现——它忠实地反映了底层解析器的语义模型。理解这一点,有助于写出更健壮的跨环境 DOM 操作逻辑。










