50 Stimmen

Ist Element.tagName immer in Großbuchstaben?

Beim Lesen bei MDN über Element.tagName heißt es:

Bei HTML-Elementen in DOM-Bäumen, die als HTML-Dokumente gekennzeichnet sind, gibt tagName den Elementnamen in Großbuchstaben zurück.

Meine Frage ist: Ist das vertrauenswürdig? Verhält sich der IE (alt und modern) wie erwartet? Wird sich das wahrscheinlich ändern? oder ist es besser, immer mit el.tagName.toLowerCase() zu arbeiten?

36voto

Leo Punkte 12690

Sie müssen toLowerCase oder so etwas nicht verwenden, die Browser verhalten sich in diesem Punkt gleich (überraschend, oder?).

In Bezug auf die Argumentation hatte ich einmal eine Diskussion mit einem Kollegen, der sehr professionell in Bezug auf W3C-Standards ist. Eine seiner Meinungen ist, dass es viel einfacher wäre, sie mit Großbuchstaben zu erkennen. Das überzeugt mich ziemlich.


Bearbeiten: Wie @adjenks sagt, gibt der XHTML-Doctype die tagName in gemischter Groß- und Kleinschreibung zurück, wenn das Dokument als Content-Type: application/xhtml+xml serviert wird. Testseite: http://programming.enthuses.me/tag-node-case.php?doc=x

Technisch gesehen, lesen Sie diese Spezifikation für weitere Informationen: http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614

Beachten Sie, dass dies (tagName) in XML groß-/kleinschreibungserhaltend ist, wie alle Operationen des DOM. Das HTML-DOM gibt den tagName eines HTML-Elements in der kanonischen Großbuchstabenform zurück, unabhängig von der Groß- und Kleinschreibung im Quell-HTML-Dokument.

Zur Frage des Fragestellers: Dies ist vertrauenswürdig. Eine Änderung des HTML-Standards ist unwahrscheinlich.

32voto

crayze Punkte 370

In WebKit/Chromium ist es nicht vertrauenswürdig, WebKit kann auch tagName-Eigenschaften in Kleinbuchstaben erstellen, die meisten Webseiten verwenden Großschreibung für tagName's, aber es ist auch möglich, Kleinbuchstaben zu verwenden, daher müssen Sie bei der Verwendung von WebKit darauf vorbereitet sein, beide Fälle zu unterstützen. Ich dachte, tagName's sind immer in Großbuchstaben (die meisten sind es) und ich sehe, dass ich falsch lag, jetzt muss ich mein Skript ein wenig anpassen :)

Chrom's Inspektor-Screenshot hier

BEARBEITEN: console.log

8voto

Akansh Punkte 1616

tagName und nodeName kommen in Kleinbuchstaben oder Groß- und Kleinschreibung vor, falls die Seite Antwortheader den Header Content-type: application/xhtml+xml; oder einen anderen XHTML-bezogenen Inhaltstyp hat. z.B. gibt document.documentElement.nodeName html zurück. Lesen Sie dies für weitere Fälle: https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614

6voto

Rafael Punkte 7367

Arbeiten Sie mit element.tagName.toLowerCase(), wenn Ihr Code die Ausgabe in Kleinbuchstaben erfordert. Wenn sich die Standards in Zukunft auf Kleinbuchstaben ändern, erhalten Sie in Ihrer Ausgabe keinen anderen Wert, da er sowieso in Kleinbuchstaben formatiert ist.

Im Gegenteil, wenn Sie es ohne toLowerCase() lassen, kann sich die Ausgabe Ihres Codes ändern, wenn die Standards geändert werden, um Kleinbuchstaben auszugeben.

Ich bezweifle jedoch, dass sich der Standard dafür ändern wird. Das liegt ganz bei Ihren Bedürfnissen.

6voto

loopmode Punkte 548

Meine Tests zeigen, dass der tagName von SVG-Elementen in allen von mir überprüften Browsern im August 2018 (Chrome 68, Firefox 61, Edge 42, IE11) offensichtlich in Kleinbuchstaben ist.

Nicht sicher, wie sich das zu den in den MDN-Dokumentationen erwähnten "DOM-Bäumen" verhält - möglicherweise werden SVG-Bäume trotz ihrer Zugehörigkeit zum DOM-Baum separat/anders behandelt. Im Endeffekt sprechen Entwickler jedoch typischerweise von "SVG-Elementen" und "DOM-Elementen", um darauf hinzuweisen, dass sie nicht dasselbe sind.

In jedem Fall, wenn deine Anwendung SVG-Elemente sowie normale DOM-Elemente behandeln muss, stelle sicher, dass du tagName.toUpperCase() verwendest.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X