<head> Element Pflicht?
Henry
- html
- wiki
0 Der Martin0 Matthias Scharwies0 Henry0 Matthias Scharwies
Hallo,
hier im Wiki wird unmissverständlich gesagt, dass das <head>Element zwingend notwendig ist. Wenn ich das hier aber richtige verstehe, ist dem nicht so?
Daher frage ich hier mal lieber, bevor ich das unsinnigerweise ändere.
Gruss
Henry
Hallo Henry,
hier im Wiki wird unmissverständlich gesagt, dass das <head>Element zwingend notwendig ist. Wenn ich das hier aber richtige verstehe, ist dem nicht so?
beachte zuerst, dass die von dir verlinkte Spec HTML 4.01 ist, die Informationen im Wiki aber in der Regel für HTML 5 gelten. Da mag es Unterschiede geben.
Darüber hinaus lese ich in HTML 4.01, dass sowohl das Start-Tag, als auch das End-Tag für head optional sind. Das head-Element wird aber implizit dennoch im DOM erzeugt - ähnlich wie ein tbody-Element, das im DOM auch existiert, wenn es nicht ausdrücklich im Quellcode notiert wurde.
Letztendlich finde ich die Frage aber akademisch. Ein ordentlich aufgebautes HTML-Dokument sollte meines Erachtens auch ein im Quellcode ausgeschriebenes head-Element haben, auch wenn man die Regeln vielleicht dahingehend interpretieren kann, dass man es weglassen darf.
Live long and pros healthy,
Martin
Hallo Der,
beachte zuerst, dass die von dir verlinkte Spec HTML 4.01 ist, die Informationen im Wiki aber in der Regel für HTML 5 gelten. Da mag es Unterschiede geben.
upps, gut zu wissen. Dann brauche ich da auch gar nicht auf die Inkosistenz einzugehen, die dort besagt, head optional aber title Pflicht und im Head-Element.
Darüber hinaus lese ich in HTML 4.01, dass sowohl das Start-Tag, als auch das End-Tag für head optional sind. Das head-Element wird aber implizit dennoch im DOM erzeugt - ähnlich wie ein tbody-Element, das im DOM auch existiert, wenn es nicht ausdrücklich im Quellcode notiert wurde.
Mit <head> hast du recht, <tbody> aber nicht unbedingt automatisch.
Letztendlich finde ich die Frage aber akademisch. Ein ordentlich aufgebautes HTML-Dokument sollte meines Erachtens auch ein im Quellcode ausgeschriebenes head-Element haben, auch wenn man die Regeln vielleicht dahingehend interpretieren kann, dass man es weglassen darf.
Kann man so sehen, ich allerdings freue mich immer wenn Sachen wegfallen und dennoch ein gültiges Dokument dabei herauskommt.
Gruss
Henry
@@Henry
Hallo Der,
Nicht mehr neu, also nur noch mittelmäßig lustig. 😉
beachte zuerst, dass die von dir verlinkte Spec HTML 4.01 ist, die Informationen im Wiki aber in der Regel für HTML 5 gelten. Da mag es Unterschiede geben.
upps, gut zu wissen.
Was noch gut zu wissen ist: die HTML-4.01-Spec ist irrelevant.
Dann brauche ich da auch gar nicht auf die Inkosistenz einzugehen, die dort besagt, head optional aber title Pflicht und im Head-Element.
Da ist keine Inkonsistenz, sondern ein Missverständnis deinerseits. Du solltest zwischen Element und Tag unterscheiden lernen.
Das head
-Element ist Pflicht. Es ist immer vorhanden, auch wenn nicht explizit im HTML, denn
die Tags <head>
und </head>
sind optional. Auch wenn sie nicht im Quelltext vorhanden sind, wird ein head
-Element im DOM generiert.
Beispiel: Dieses HTML
<title>Beispiel</title>
<p>Das ist ein Beispiel.
generiert dieses DOM:
document
└╴html
├╴head
│ └╴title
│ └╴"Beispiel"
└╴body
└╴p
└╴"Das ist ein Beispiel."
Mit <head> hast du recht, <tbody> aber nicht unbedingt automatisch.
Niemand hat automatisch recht. Recht hat Der Martin aber dennoch.
Ein tbody
-Element ist als Kind von table
immer vorhanden, auch wenn keine <tbody>
/</tbody>
-Tags im HTML-Quelltext stehen. (Wenn wir nicht über XHTML 1.x reden, was irrelevant ist.)
Kann man so sehen, ich allerdings freue mich immer wenn Sachen wegfallen und dennoch ein gültiges Dokument dabei herauskommt.
Bei der CSSBattle freue ich mich immer, wenn Sachen wegfallen; völlig egal, ob ein gültiges Dokument dabei herauskommt. 😆
In allen anderen Fällen finde ich den Code wie Der Martin besser lesbar, wenn optionale Tags nicht weggelassen werden.
Wenn man an einer Seite arbeitet, die millionenfach pro Minute aufgerufen wird, mag die Optimierung anders aussehen. Aber das sind sehr wenige Spezialfälle.
😷 LLAP
Tach!
Letztendlich finde ich die Frage aber akademisch. Ein ordentlich aufgebautes HTML-Dokument sollte meines Erachtens auch ein im Quellcode ausgeschriebenes head-Element haben, auch wenn man die Regeln vielleicht dahingehend interpretieren kann, dass man es weglassen darf.
Kann man so sehen, ich allerdings freue mich immer wenn Sachen wegfallen und dennoch ein gültiges Dokument dabei herauskommt.
Auch wenn man einige Start- und End-Tags nicht weglassen darf, erzeugt der Browser oftmals die gewünschte Darstellung, wenn man es trotzdem tut, weil dann seine Fehlerkorrektur einschreitet. Und auch wenn die Spezifikation sehr oft vorgibt, wie auf Fehler zu reagieren ist, sollte man das nicht als Freibrief für sich selbst ansehen, Dinge wegzulassen.
Bei falsch platzierten Tags kann man zumindest noch sehen, was der Autor gemeint hat. Bei fehlenden Dingen, wird das schwer. Wenn man das Weglassen aus Bequemlichkeitsgründen in Erwägung zieht, sollte man lieber über geeignete Editoren oder IDEs nachdenken, die einem Arbeit abnehmen und trotzdem oder auch gerade deshalb das Erstellen gültiger und lesbarer Dokumente unterstützen.
dedlfix.
Servus!
Hallo,
hier im Wiki wird unmissverständlich gesagt, dass das <head>Element zwingend notwendig ist. Wenn ich das hier aber richtige verstehe, ist dem nicht so?
Daher frage ich hier mal lieber, bevor ich das unsinnigerweise ändere.
Ich bin grad dabei die HTML-Referenz zu aktualisieren.
Aber selbst dort steht es richtig: HTML/Elemente/head
Die betreffenden Seiten mit Live-Beispielen (schwierig bei html, head und meta) werden sukzessive zu Kursen umgebaut und dann hoffentlich um Fehler bereinigt.
Herzliche Grüße
Matthias Scharwies
Hallo Matthias,
Ich bin grad dabei die HTML-Referenz zu aktualisieren.
Aber selbst dort steht es richtig: HTML/Elemente/head
Ah… die Referenz gibts ja auch. Ja stimmt, das steht es. Hätte dann aber auch was für den Title-Element dort. Ist zwar Pflicht aber nicht unbedingt immer:
The title element is a required child in most situations, but when a higher-level protocol provides title information, e.g. in the Subject line of an e-mail when HTML is used as an e-mail authoring format, the title element can be omitted.
Steht seltsamerweise im Head Artikel dort.
Quelle: https://dev.w3.org/html5/spec-LC/semantics.html#the-head-element
Und noch eine Frage. In der aktuellen Spec, finde ich keinen Hinweis darauf, dass (wie hier in der Referenz) title im head sein muss. Das Netz ist da auch nicht unbedingt einheitlich. Ist <title> nun nur im Head erlaubt oder nicht?
Gruss
Henry
Hallo Henry,
Und noch eine Frage. In der aktuellen Spec, finde ich keinen Hinweis darauf, dass (wie hier in der Referenz) title im head sein muss. Das Netz ist da auch nicht unbedingt einheitlich. Ist <title> nun nur im Head erlaubt oder nicht?
Doch: https://dev.w3.org/html5/spec-LC/semantics.html#the-title-element
Contexts in which this element can be used: In a head element containing no other title elements.
There must be no more than one title element per document.
Ausnahme ist die Verwendung von inline-SVG. Dort könnte man dann im anderen Namensraum (der aber nicht mehr deklariert werden muss) weitere title-Elemente als Tooltip setzen.
Herzliche Grüße
Matthias Scharwies
Hallo Matthias,
Doch: https://dev.w3.org/html5/spec-LC/semantics.html#the-title-element
Contexts in which this element can be used: In a head element containing no other title elements.
hmm… dann ist aber doch Quatsch von denen zu sagen, <head> wäre optional, oder sehe ich das falsch? Gibt aber dort noch eine Aussage:
If the title element is null, then a new title element must be created and appended to the head element. Let element be that element. Otherwise, let element be the title element.
Angehängt am <head> Element würde ich jetzt ausserhalb verstehen oder meinen die doch innerhalb damit?
Gruss
Henry
Servus!
Hallo Matthias,
Doch: https://dev.w3.org/html5/spec-LC/semantics.html#the-title-element
Contexts in which this element can be used: In a head element containing no other title elements.
hmm… dann ist aber doch Quatsch von denen zu sagen, <head> wäre optional, oder sehe ich das falsch? Gibt aber dort noch eine Aussage:
If the title element is null, then a new title element must be created and appended to the head element. Let element be that element. Otherwise, let element be the title element.
Angehängt am <head> Element würde ich jetzt ausserhalb verstehen oder meinen die doch innerhalb damit?
Optional heißt nur, dass Du das nicht hinschreiben musst. Es wird dann vom Browser erzeugt:
<!doctype html>
<!---- <html> wird vom Browser erzeugt! -->
<!---- <head> das auch --->
<title>Dokument ohne html und head</title>
<h1>Überschrift</h1>
Speicher das mal ab und schau's dir im Chrome Debugger an!
Und deshalb würde ich das mit dem optional gleich vergessen und alle Elemente immer notieren.
Bei einer CSS-Challenge mag so was sinnvoll sein - im normalen Leben nicht.
Herzliche Grüße
Matthias Scharwies
Hallo,
Doch: https://dev.w3.org/html5/spec-LC/semantics.html#the-title-element
Contexts in which this element can be used: In a head element containing no other title elements.
hmm… dann ist aber doch Quatsch von denen zu sagen, <head> wäre optional, oder sehe ich das falsch?
du unterscheidest nicht sauber zwischen Tag und Element. Die öffnenden und schließenden head-Tags darfst du weglassen (auch wenn ich das nicht schön finde), aber das Element wird's im DOM trotzdem geben.
If the title element is null, then a new title element must be created and appended to the head element. Let element be that element. Otherwise, let element be the title element.
Angehängt am <head> Element würde ich jetzt ausserhalb verstehen oder meinen die doch innerhalb damit?
Wenn vom Element die Rede ist, meint man in der Regel die browserinterne DOM-Repräsentation. Und im DOM heißt append: Als Kindknoten einhängen.
Live long and pros healthy,
Martin
Hej Matthias,
Ausnahme ist die Verwendung von inline-SVG. Dort könnte man dann im anderen Namensraum (der aber nicht mehr deklariert werden muss) weitere title-Elemente als Tooltip setzen.
Zum Wiki: Die Darstellung als Tooltipp machen zwar viele (alle?) Browser so, aber die Spec schreibt das nicht vor. Selbst wenn der Browser Tooltipps ausgibt, werden die meisten Nutzer das nicht sehen.
Trotzdem sollte man title
sinnvoll befüllen, damit es einen zugänglichen Namen für Screenreader gibt.
Besser sind allerdings sichtbare Texte, damit jeder Nutzer Beschreibungen erreichen kann.
Ich habe das entsprechend angepasst und ergänzt, dass das Element aus Gründen der Abwärtskompatibilität zu SVG 1.1 als erster Kind stehen sollte. (Der Grund war nciht angegeben).
Marc (marctrix)
Servus!
Ich habe das entsprechend angepasst und ergänzt, dass das Element aus Gründen der Abwärtskompatibilität zu SVG 1.1 als erster Kind stehen sollte. (Der Grund war nciht angegeben).
Vielen Dank!
Herzliche Grüße
Matthias Scharwies
Hej Matthias,
Ich habe das entsprechend angepasst und ergänzt
Vielen Dank!
Nicht dafür!
Marc (marctrix)