Element.tagName总是大写的吗?

时间:2014-12-01 07:42:23

标签: javascript

MDN about Element.tagName阅读它说:

  

对于标记为HTML文档的DOM树中的HTML元素,tagName以大写形式返回元素名称。

我的问题是:这可信吗? IE(旧的和现代的)表现如预期的那样吗?这可能会改变吗?或者最好总是使用el.tagName.toLowerCase()

5 个答案:

答案 0 :(得分:21)

你不必toLowerCase或者其他什么,浏览器在这一点上也是如此(令人惊讶的是吧?)。

关于理由,我曾与一位在W3C标准方面非常专业的同事进行过讨论。如果他的意见是使用大写TAGNAME将更容易从用户内容中识别它们。这对我来说很有说服力。


编辑:正如@adjenks所说,如果文档作为Content-Type: application/xhtml+xml 提供,XHTML doctype将返回大小写的tagName 。测试页:http://programming.enthuses.me/tag-node-case.php?doc=x

从技术上讲,请阅读此规范以获取更多信息:http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614

  

请注意,此(tagName)在XML 中保留大小写,DOM的所有操作也是如此。无论源HTML文档中的大小写如何,HTML DOM都会以规范的大写形式返回HTML元素的tagName。

至于提问者的问题:这是值得信赖的。 HTML规范中不太可能发生重大变化。

答案 1 :(得分:20)

在WebKit / Chromium中它不可信,WebKit也可以用小写创建tagName属性,大多数网页构建大写的tagName,但也可以构建小写值,所以如果你使用WebKit,你必须准备支持两种情况。 我认为tagName是大写的(大多数都是),我看到我错了,现在我必须修复我的脚本:)

chrome's inspector screenshot here

编辑: console.log

答案 2 :(得分:6)

tagNamenodeName小写或区分大小写,以防页面响应标头包含Content-type: application/xhtml+xml;标头或任何与xhtml相关的内容类型。 例如document.documentElement.nodeName返回html 阅读本文以了解更多案例:https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614

答案 3 :(得分:3)

如果您的代码需要小写输出,请使用element.tagName.toLowerCase()。如果标准在未来变为小写,那么你的输出中就不会得到不同的值,因为无论如何它都被格式化为小写。

相反,如果您在没有toLowerCase()的情况下离开它,那么如果将标准更改为输出为小写,则代码输出可能会更改。

我怀疑标准会因此而改变。这完全取决于您的需求。

答案 4 :(得分:1)

我的测试表明,在我于2018年8月检查的所有浏览器(Chrome 68,Firefox 61,Edge 42,IE11)中,SVG元素的tagName似乎都是小写

不确定与MDN文档中提到的“ DOM树”有什么关系-尽管SVG树是DOM树的一部分,但它们可能是分别/不同地处理的。 最后,开发人员通常会说“ SVG元素”和“ DOM元素”,就像指出它们不是一回事一样。

无论如何,如果您的应用程序需要处理SVG元素以及常规DOM元素,请确保使用tagName.toUpperCase()