Lukas: Zufällig was entdeckt: trick mit dem <body>-tag

Hallo liebe leute.

ich zahle fuer meinen webhost kein geld, also habe ich oben auf jeder seite ein werbe-banner.

gestern hab ich wiedermal ein bisschen an meinem code rumgebastelt und  ploetzlich festgestellt, dass nun der werbebanner immer ganz unten statt ganz oben ist. das war mir zunaechst sogar ganz recht ;-)

doch dann hab ich den grund festgestellt:
ich hatte ausversehen den einleitenden <body>-tag weggekratzt.

dies hatte aber keinerlei auswirkungen auf die seite. alles blieb wies war...nur das die werbung halt ganz unten war. mein body tag war ja sowieso leer, weil ich alles zentral mit css definiert habe.

nun meine frage:

darf ich das ruhig so lassen, oder kann es ohne <body>-tag gefaehrlich sein (fuer andere brauser vielleicht)?

ich muss euch sagen, dass ich leider keine moeglichkeit habe meine seite mit anderen browsern zu testen, weil ich hier auf meinem internat natuerlich nur die vorgebene software auf den schulcomputern benutzen darf...

gruss
lukas

  1. Hallo,

    sehr wahrscheinlich wird Deine Seite auf vielen Brausern nicht laufen. Wenn Du die Seite nicht auf verschiedenen Browsern testen kannst, dann teste sie wenigstens mit dem Validator vom W3C: http://validator.w3.org/. Das schließt so manchen Fehler aus.

    Heiner

    1. Moin!

      sehr wahrscheinlich wird Deine Seite auf vielen Brausern nicht laufen.

      Wegen des fehlenden <body> aber garantiert nicht. Das ist in HTML nämlich optional und darf deshalb fehlen.

      Wenn Du die Seite nicht auf verschiedenen Browsern testen kannst, dann teste sie wenigstens mit dem Validator vom W3C: http://validator.w3.org/. Das schließt so manchen Fehler aus.

      Der Validator wird meine Ansicht bestätigen.

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
  2. hallo Lukas,

    darf ich das ruhig so lassen, oder kann es ohne <body>-tag gefaehrlich sein (fuer andere brauser vielleicht)?

    Du kannst das ruhig so lassen. Das <body>-tag ist optional, das heißt, wenns dir nicht gefällt, kannst du es sogar ganz und gar weglassen. Die Begründung dafür kannst du in http://edition-w3.de/TR/1999/REC-html401-19991224/struct/global.html#h-7.5.1 nachlesen.

    Grüße aus Berlin

    Christoph S.

    1. Hallo,

      Das <body>-tag ist optional, das heißt, wenns dir nicht gefällt, kannst du es sogar ganz und gar weglassen. Die Begründung dafür kannst du in http://edition-w3.de/TR/1999/REC-html401-19991224/struct/global.html#h-7.5.1 nachlesen.

      Hoppla, man lernt doch nie aus. Das <body>-tag ist tatsächlich optional. Und ich habe bei SELFHTML gelernt, dass das <body>-tag zum Grundgerüst einer HTML-Datei gehört.
      Im Variete gibt es wohl Damen ohne Unterleib. Aber ein HTML-Dokument ohne <body>-tag? Ein Kopf ohne Rumpf? Na ja, hinter dem Kopf muss ja noch was kommen, sonst wird in den Browsern nichts angezeigt. Und das <body>-tag kann eben verschämt verschwiegen werden. Macht das aber einen Sinn? Eigentlich habe ich noch nie eine HTML-Seite ohne <body>-tag gesehen.
      Und ist auch in XHTML das <body>-tag optional? Sicherlich.

      Grüsse aus Neubrandenburg
      erika

      --
      Hauptsache dem Hund geht's gut
      1. Hallo.

        Und ist auch in XHTML das <body>-tag optional? Sicherlich.

        Sicherlich weiß dies der Validator für jede einzelne Version von (X)HTML.
        MfG, at

      2. Guten Morgen,

        eben habe ich weiter nachgelesen unter
        http://edition-w3.de/TR/1999/REC-html401-19991224/struct/global.html#h-7.5.1

        Nicht nur das <body>-tag ist optional, das trifft auch auf  das <html>-tag und das <head>-tag zu. Da bleibt vom ganzen Grundgerüst einer HTML-Datei de facto nur das <title>-tag übrig.
        Dass es so ist, steht in der W3C-Dokumentation.
        Aber ich finde dazu keine Begründung.
        Wozu soll das gut sein?

        Grüsse aus Neubrandenburg
        erika

        --
        Hauptsache dem Hund geht's gut
        1. Hallo.

          Nicht nur das <body>-tag ist optional, das trifft auch auf  das <html>-tag und das <head>-tag zu. Da bleibt vom ganzen Grundgerüst einer HTML-Datei de facto nur das <title>-tag übrig.

          Und die Doctype-Deklaration?
          MfG, at

          1. Hallo,

            Und die Doctype-Deklaration?

            Na die muss sein, sonst fängt der Validator erst gar nicht an zu arbeiten.

            Grüsse, erika

            --
            Hauptsache dem Hund geht's gut
            1. Hallo.

              Und die Doctype-Deklaration?
              Na die muss sein, sonst fängt der Validator erst gar nicht an zu arbeiten.

              Siehst du? Und sie reicht doch völlig aus, um den Browser wissen zu lassen, was er mit den folgenden Daten zu tun hat. Nur elegant ist es eben nicht.
              MfG, at

              1. Hallo at,

                Nur elegant ist es eben nicht.

                Schön, dass Du das sagst. Ein Quellcode ohne html, head und body sieht doch recht seltsam aus. Und wie oft beziehen sich CSS-Formatierungen auf den body, manchesmal auch auf html.
                In einem HTML-Dokument sind html-, head- und body-tags optional.
                Und in XHTML? Ich hab es ausprobiert und da gibt der Validator diverse Fehlermeldungen aus. Nur mit den html-, head- und body-tags wurde das XHTML-Dokument validiert (ich hoffe, ich habe keinen Fehler gemacht).

                Grüsse aus Neubrandenburg
                erika

                --
                Hauptsache dem Hund geht's gut
                1. Hallo.

                  Schön, dass Du das sagst. Ein Quellcode ohne html, head und body sieht doch recht seltsam aus. Und wie oft beziehen sich CSS-Formatierungen auf den body, manchesmal auch auf html.

                  Nun, im Allgemeinen stammen aber beide Dateien vom gleichen Autoren.

                  Nur mit den html-, head- und body-tags wurde das XHTML-Dokument validiert (ich hoffe, ich habe keinen Fehler gemacht).

                  Fehler zeigt der Validator ja an ;-)
                  MfG, at

                  1. Guten Abend,

                    also langer Rede kurzer Sinn.

                    In HTML sind die Start- und Endtags für die Elemente html, head und body optional.
                    Warum das so festgelegt wurde, ist mir nach wie vor schleierhaft.
                    Oder kann mir jemand einen triftigen Grund nennen?

                    In XHTML müssen für _alle_ Elemente, auch für html, head und body, Start-und Endtags vorhanden sein, anderenfalls ist das XHTML-Dokument nicht valide.
                    Und das kann ich voll und ganz nachvollziehen.

                    Und nun Gute Nacht
                    erika

                    --
                    Hauptsache dem Hund geht's gut
                    1. Hallo.

                      In HTML sind die Start- und Endtags für die Elemente html, head und body optional.
                      Warum das so festgelegt wurde, ist mir nach wie vor schleierhaft.
                      Oder kann mir jemand einen triftigen Grund nennen?

                      Weil die Entwickler bequeme Praktiker waren, denen es nicht um das Prinzip geht, sondern die Fuktion ging? Welchen Grund sollte es sonst für diese "Nachlässigkeiten" geben?
                      MfG, at

                      1. Hallo,

                        nun gut, buchen wir das kopfschüttelnd unter "Nachlässigkeiten" ab.
                        Also, ich schreibe nach wie vor html, head, body mit Start- und Endtag.  In XHTML ist das ein Muß, in HTML ist es optional, also nicht verboten.

                        Grüsse aus Neubrandenburg
                        erika

                        --
                        Hauptsacche dem Hund geht's gut

        2. Hi!

          Nicht nur das <body>-tag ist optional, das trifft auch auf  das <html>-tag und das <head>-tag zu. Da bleibt vom ganzen Grundgerüst einer HTML-Datei de facto nur das <title>-tag übrig.
          Dass es so ist, steht in der W3C-Dokumentation.
          Aber ich finde dazu keine Begründung.

          Beschaeftige Dich damit, was ein "Tag" ist und was ein "Element" ist.

          * Die html-, head- und body-Elemente sind in jedem HTML-Dokument vorhanden, die zugehoerigen Tags jedoch nicht notwendigerweise.
          * Es gibt Start-Tags und End-Tags, aber keine Start-Elemente oder End-Elemente, sondern einfach nur Elemente.
          * Die Tags sind die Markierungen, wo ein Element beginnt und wo es aufhoert.
          * Das SGML-basierte HTML ist so angelegt, dass die Tags eines Elements weggelassen werden koennen, wenn diese Grenzen aus dem Kontext ersichtlich sind. (Z.B. kann ein <p> nur im <body> vorkommen, also muss der <body> noch vorher beginnen.)
          * Das XML-basierte XHTML dagegen schreibt das Vorhandensein aller Tags zwingend vor.

          Ich denke, mit diesen Stichpunkten und ein wenig Literatur kommst Du klar.

          So long

          --
          "Microsoft ist über die Probleme informiert, hat aber noch nicht reagiert."
          "Der Patch %s, der das Problem %s beheben sollte, funktioniert offenbar nicht."
          "Wann ein Update verfügbar sein wird, ist nicht bekannt."
              (Textbausteine der Heise-Newsticker-Redaktion)
          1. Guten Morgen,

            danke Calocybe für Deine Klarstellungen (Element, Tag).

            Ich finde es nur eigenartig, dass für die Elemente html, head und body, die zum Grundgerüst eines HTML-Dokuments gehören, die Start-Tags und End-Tags optional sind. Warum ist das so, welche Überlegungen stehen dahinter?

            * Das SGML-basierte HTML ist so angelegt, dass die Tags eines Elements weggelassen werden koennen, wenn diese Grenzen aus dem Kontext ersichtlich sind. (Z.B. kann ein <p> nur im <body> vorkommen, also muss der <body> noch vorher beginnen.)

            Also auch: Das Element <title> kann nur im Kopf vorkommen, also muss der Kopf vorher beginnen (und vor dem Dateikörper enden).

            Na gut, es ist im SMGL-basierten HTML eben so festgelegt, dass die Start- und End-Tags bei den Elementen html, head und body optional sind, aus welchen Gründen auch immer.

            * Das XML-basierte XHTML dagegen schreibt das Vorhandensein aller Tags zwingend vor.

            Das ist für mein Verständnis logischer.

            Grüsse aus Neubrandenburg
            erika

            --
            Hauptsache dem Hund geht's gut
            1. Re!

              Also auch: Das Element <title> kann nur im Kopf vorkommen, also muss der Kopf vorher beginnen (und vor dem Dateikörper enden).

              Genau.

              Na gut, es ist im SMGL-basierten HTML eben so festgelegt, dass die Start- und End-Tags bei den Elementen html, head und body optional sind, aus welchen Gründen auch immer.

              Seinerzeit[1] hatte man wohl noch eine etwas andere Einstellung zu Ressourcen und deren Schonung. Die Computer waren ja auch noch etwas langsamer und hatten weniger Speicher. Vielleicht ist das der Grund.
              In SGML sind noch viel schmutzigere Sachen moeglich. Z.B. kann man unter Umstaenden die schliessende spitze Klammer vom Tag weglassen.

              [1] SGML wurde waehrend der ersten Haelfte der 1980er Jahre entwickelt; 1986 wurde dann der endgueltige Standard ISO 8879:1986 veroeffentlicht. Die Wurzeln von SGML reichen sogar bis in die spaeten 60er Jahre zurueck. http://xml.coverpages.org/sgmlhist0.html

              So long

              --
              "Microsoft ist über die Probleme informiert, hat aber noch nicht reagiert."
              "Der Patch %s, der das Problem %s beheben sollte, funktioniert offenbar nicht."
              "Wann ein Update verfügbar sein wird, ist nicht bekannt."
                  (Textbausteine der Heise-Newsticker-Redaktion)
              1. Hallo,

                Danke für den Link. Oft findet man in der Vergangenheit die Erklärung für Gegenwärtiges.

                Grüsse aus Neubrandenburg
                erika

                --
                Hauptsache dem Hund geht's gut
      3. Hallo,

        Das <body>-tag ist tatsächlich optional.

        Wie vieles anderes auch.

        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
        <title>Ultrakurzes HTML 4.01 Dokument</title>
        <p>Dies ist ein ultrakurzes, aber valides HTML 4.01-Strict-Dokument!

        http://validator.w3.org/check?uri=http%3A%2F%2Fwww.tiptom.ch%2Ftests%2Fhtml%2Fultra401.html

        Im Variete gibt es wohl Damen ohne Unterleib. Aber ein HTML-Dokument ohne <body>-tag?

        Dein Vergleich hinkt.
        Das "<body>-Tag" sagt ja nur: Hier faengt der Body an.
        (Um den hinkenden Vergleich fortzufuehren:
        Auch eine Dame ohne Guertel [als Trennlinie Ober-/Unterleib]
        kann einen Unterleib haben...)

        Du kannst auch ohne einleitendes Body-Tag  jede Menge Inhalt im Body haben.

        Dass das einleitende und abschliessende BODY-Tag fakultativ sind,
        siehst Du z.B. in folgender Tabelle (Spalten "Start Tag" und "End Tag" ein "O" fuer "optional"):
        http://www.w3.org/TR/html401/index/elements.html

        Gruesse,

        Thomas

        1. Hallo Thomas,

          Dein Beispiel ist okay.
          Ich hab mir selbst auch noch ein Beispiel gebastelt und der Validator hat seinen Segen dazu gegeben. Aber komisch sieht so ein ultrakurzer Quellcode aus.

          Dein Vergleich hinkt.....

          Vergleiche hinken fast immer. Aber Dein Vergleich ist gut.
          Man könnt Deinen Vergleich fortsetzen: Die Dame hat einen Kopf auch ohne Kopftuch oder Kopfband.

          Dass das einleitende und abschliessende BODY-Tag fakultativ sind,
          siehst Du z.B. in folgender Tabelle (Spalten "Start Tag" und "End Tag" ein "O" fuer "optional"):
          http://www.w3.org/TR/html401/index/elements.html

          Diese Tabelle hatte ich mir bereits angesehen und mit Erstaunen festgestellt, dass auch das <html>-tag und das <head>-tag optional sind. Vom HTML-Grundgerüst bleibt fast nichts übrig. Welchen Sinn macht das eigentlich?

          Neugierig, wie ich bin, hab ich Dein Beispiel wie folgt verändert:

          <?xml version="1.0" encoding="iso-8859-1"?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <title>Ultrakurzes XHTML 1.0 Strict Dokument</title>
          <p>Dies ist ein ultrakurzes, aber leider nichtvalides XHTML 1.0-Strict-Dokument!</p>
          Meine drei Browser zeigen den Text an. Aber der Validator spuckt etliche Fehlermeldungen aus. Er validiert das Dokument nur, wenn das Grundgerüst vollständig angegeben wird (html, head, body jeweils mit Anfangs- und Endtag). Oder habe ich was falsch gemacht?

          Abendliche Grüsse aus Neubrandenburg
          erika

          --
          Hauptsache dem Hund geht's gut
          1. Hallo erika

            http://www.w3.org/TR/html401/index/elements.html
            Diese Tabelle hatte ich mir bereits angesehen und mit Erstaunen festgestellt, dass auch das <html>-tag und das <head>-tag optional sind. Vom HTML-Grundgerüst bleibt fast nichts übrig. Welchen Sinn macht das eigentlich?

            Neugierig, wie ich bin, hab ich Dein Beispiel wie folgt verändert:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <title>Ultrakurzes XHTML 1.0 Strict Dokument</title>
            <p>Dies ist ein ultrakurzes, aber leider nichtvalides XHTML 1.0-Strict-Dokument!</p>
            Meine drei Browser zeigen den Text an.

            Das liegt daran, dass Browser versuchen solche Fehler zu umgehen und dies auch bei XHTML-Dokumenten tun, wenn sie als text/html ausgeliefert werden. Sorg mal dafür dass dein Server es als application/xhtml+xml ausliefert, dann wirst du nur noch eine Fehlermeldung erhalten.

            Aber der Validator spuckt etliche Fehlermeldungen aus.

            Kein Wunder, du hast ja auch ein _X_HTML-Dokument. Dein Konstrukt ist noch nicht mal ein wohlgeformtes XML-Dokument, da dein html-Element keinen End-Tag hat. Optionale Start- und End-Tags, die es in HTML erlauben, auf die <body>- und </body>-Tags zu verzichten gibt es in XHTML nicht.

            Er validiert das Dokument nur, wenn das Grundgerüst vollständig angegeben wird (html, head, body jeweils mit Anfangs- und Endtag).

            Dabei handlet er vollkommen korrekt.

            Oder habe ich was falsch gemacht?

            Ja, du hast nicht beachtet, dass XHTML etwas anderes als HTML ist.

            Abendliche Grüsse aus Neubrandenburg

            Schöne Grüße

            Johannes

            --
            ss:| zu:} ls:[ fo:} de:] va:} ch:° sh:( n4:| rl:( br:^ js:| ie:{ fl:( mo:}
  3. Hallo Lukas,

    gestern hab ich wiedermal ein bisschen an meinem code rumgebastelt und  ploetzlich festgestellt, dass nun der werbebanner immer ganz unten statt ganz oben ist. das war mir zunaechst sogar ganz recht ;-)
    doch dann hab ich den grund festgestellt:
    ich hatte ausversehen den einleitenden <body>-tag weggekratzt.

    da kann der Provider eigentlich nichts dagegen haben - du darfst schließlich dein html valide schreiben :-) (wobei es ganz nett wäre ihn darauf hinzuweisen, dass die Werbung ohne <body> nicht mehr so aussieht wie von ihm beabsichtigt)

    dies hatte aber keinerlei auswirkungen auf die seite. alles blieb wies war...

    so soll es auch sein - der <body>-Tag ist optional: http://www.w3.org/TR/html401/struct/global.html#edef-BODY.

    darf ich das ruhig so lassen, oder kann es ohne <body>-tag gefaehrlich sein (fuer andere brauser vielleicht)?

    valide ist es, aber ob sich alle Browser daran halten, weiß ich nicht - die Wahrscheinlichkeit, das die Browser das mit <body> richtig darstehlen dürfte imho nur geringfügig höher sein als wenn es fehlt.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Tobias,

      da kann der Provider eigentlich nichts dagegen haben - du darfst schließlich dein html valide schreiben :-) (wobei es ganz nett wäre ihn darauf hinzuweisen, dass die Werbung ohne <body> nicht mehr so aussieht wie von ihm beabsichtigt)

      Ist es dann auch erlaubt, per css ein

      img { display:none; }
      img.keinewerbung { display:inline; }

      einzufügen? Oder muss man da erst den Provider fragen?

      *SCNR*

      David Schneider

      --
      Hat jemand meine Signatur gesehen?