HaMartens: <DIV > Element beim starten der Seite verstecken !

Hallo ich würde gerne ein DIV Element im HTML Code haben, dass beim normalen Aufruf der Seite NICHT angezeigt wird. Ich hatte mir folgenden Code gedacht:

"...
<script type="text/javascript">
function closeErrorWindow() {
 this.document.getElementById("errormessage_fenster").style.visibility = "hidden";
}
</script>
</head>

<body onLoad="closeErrorWindow();">

<!-- Wenn Javascript ausgeschaltet ist, zeige die Fehlermeldung an -->
<div id="java_not_activated">
 <h2> Fehler ! </h2>
    <p> Sie haben JavaScript <strong>deaktiviert.</strong> Um die Seite korrekt darzustellen,
     aktivieren Sie bitte Java Script.
    </p>
</div>
...
"

Das funktioniert auch soweit, bloß dummerweise wird der Inhalt des div Tags immer für einen Bruchteil einer Sekunde angezeigt und anschließend dann ausgeblendet ! body onload sollte doch eigentlich das erste sein was ausgeführt wird ?
Gibt es eine Möglichkeit das perfekt zu gestalten ?
Vielen Dank für alle Ratschläge !!!

  1. Hello,

    body onload sollte doch eigentlich das erste sein was ausgeführt wird ?

    nein, onload wird ausgeführt wenn der Ladevorgang beendet ist (so kann man sicherstellen, dass alle erwarteten Bestandteile auch wirklich da sind).

    Gibt es eine Möglichkeit das perfekt zu gestalten ?

    na ja, du könntest das Ausblendskript direkt hinter dem div und ohne Funktion ablegen, dann sollte es direkt ausgeführt werden wenn der Browser mit dem Parsen dort angelangt ist.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Ist Dir langweilig? Willst du Spaß? Willst Du Party? Ganz einfach!!! Schicke eine SMS mit dem Bestellwort "Feuer" an die 112 und innerhalb von 5 Minuten stehen 20 Männer mit lustigen Partyhüten, Sirenen und Partywagen vor deinem Haus!  --  Herkunft unbekannt
    1. Danke, beides Super Ideen !

      Hat mir sehr weitergeholfen :-)

    2. body onload sollte doch eigentlich das erste sein was ausgeführt wird ?
      nein, onload wird ausgeführt wenn der Ladevorgang beendet ist (so kann man sicherstellen, dass alle erwarteten Bestandteile auch wirklich da sind).

      Hmm nochmal kurz darüber nachgedacht. Aber warum onload dann nicht trotzdem als erstes im body ausgeführt ? Der Browser könnte doch die gesamte Seite lesen, prüfen ob alles da ist und dann mit onload als allererstem anfangen ???

      1. Mahlzeit HaMartens,

        Hmm nochmal kurz darüber nachgedacht. Aber warum onload dann nicht trotzdem als erstes im body ausgeführt ?

        Wird es doch. Allerdings natürlich erst NACHDEM der gesamte HTML-Code geladen und geparst wurde.

        Der Browser könnte doch die gesamte Seite lesen, prüfen ob alles da ist und dann mit onload als allererstem anfangen ???

        Macht er ja.

        Du plenkst übrigens.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Wird es doch. Allerdings natürlich erst NACHDEM der gesamte HTML-Code geladen und geparst wurde.

          Und wie kommt es dann, dass der Browser den DIV Inhalt erst anzeigt, und dann wieder versteckt, obwohl der Aufruf der style.visibility = "hidden" Funktion im body tag aufgerufen wird?

          Du plenkst übrigens.

          Nicht immer, nur hin und wieder am Satzende ! (Satzende! schau ja wohl doof aus ;o)

          1. Mahlzeit HaMartens,

            Wird es doch. Allerdings natürlich erst NACHDEM der gesamte HTML-Code geladen und geparst wurde.
            Und wie kommt es dann, dass der Browser den DIV Inhalt erst anzeigt, und dann wieder versteckt, obwohl der Aufruf der style.visibility = "hidden" Funktion im body tag aufgerufen wird?

            Wo "im body tag" wird da eine Funktion aufgerufen? Im "onload"-Eventhandler? Dann ist es doch klar:

            Der Browser liest die Datei ein, parst sie und stellt sie dar. Erst jetzt - NACH dem Laden - werden die verschiedenen "onload"-Eventhandler getriggert, so dass u.a. auch das <div> ausgeblendet wird.

            Wenn Du hingegen - wie Rouven ja bereits vorschlug - direkt nach dem <div> ein kleines Stückchen Javascript-Code integrierst, das direkt dieses <div> wieder ausblendet, sollte es gar nicht erst erscheinen:

            [...]  
            <body>  
            <div id="foobar">blafasellaber</div>  
            <script type="text/javascript">  
            [code lang=javascript]document.getElementById('foobar').style.display = 'none';
            

            </script>
            [...][/code]

            Du plenkst übrigens.

            Nicht immer, nur hin und wieder am Satzende ! (Satzende! schau ja wohl doof aus ;o)

            Nein, tut es nicht (Du siehst, über Geschmack lässt sich trefflich streiten, weswegen man in Fällen der Typographie auch nicht nach dem persönlichen Gusto, sondern nach allgemeinen Regeln richten sollte - insbesondere, wenn diese sinnvoll sind, da sie Unsauberkeiten eliminieren und die Leserlichkeit des Textes erhöhen). Außerdem ist es korrekte deutsche Typographie. Und übrigens bezieht sich das "plenken" auf Satzenden ... aber das steht ja auch in dem verlinkten Artikel.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallo,

    Du könntest dem DIV-Element auch direkt per CSS die Eigenschaft zuweisen - dann ist es von Anfang an unsichtbar.

    Grüße Basti

    1. Hi,

      Du könntest dem DIV-Element auch direkt per CSS die Eigenschaft zuweisen

      Ja, sofern er das mit JS macht. Ansonsten ist es wohl weitgehend sinnfrei ... :)

      Gruß, Cybaer

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
      1. Hallo,

        Ja, sofern er das mit JS macht. Ansonsten ist es wohl weitgehend sinnfrei ... :)

        Hm, wenn das DIV gar nicht erscheinen soll, soll es ja wahrscheinlich später per JavaScript eingeblendet werden. Also spricht nichts dagegen, die visibility="hidden"-Eigenschaft direkt im CSS-File zu notieren.

        Grüße Basti

        1. Hello,

          Hm, wenn das DIV gar nicht erscheinen soll, soll es ja wahrscheinlich später per JavaScript eingeblendet werden. Also spricht nichts dagegen, die visibility="hidden"-Eigenschaft direkt im CSS-File zu notieren.

          wie genau hast du das Ausgangsposting gelesen? Dort geht es um ein DIV, das anzeigt, dass JavaScript deaktiviert, zur Nutzung der Seite aber erforderlich ist. Welchen Sinn würde es machen dieses einzublenden, wenn JavaScript aktiv ist?

          MfG
          Rouven

          --
          -------------------
          sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
          Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
  3. Hi,

    <!-- Wenn Javascript ausgeschaltet ist, zeige die Fehlermeldung an -->
    <div id="java_not_activated">
    <h2> Fehler ! </h2>
        <p> Sie haben JavaScript <strong>deaktiviert.</strong> Um die Seite korrekt darzustellen,
         aktivieren Sie bitte Java Script.
        </p>
    </div>

    warum hampelst Du da nur so mit CSS rum, anstatt die Meldung in das genau dafür vorgesehene Element <noscript> zu setzen?

    freundliche Grüße
    Ingo

    1. warum hampelst Du da nur so mit CSS rum, anstatt die Meldung in das genau dafür vorgesehene Element <noscript> zu setzen?

      ich frage mich eher, was die korrekte darstellung einer seite mit aktiviertem javascript zu tun haben soll - bisher dachte ich, für die darstellung ist css verantwortlich :D

      und weil wir grade dabei sind, ein paar negativbeispiele: http://derstandard.at/ bitte mal ohne javascript aufrufen, das schindet echt eindruck bei einer renomierten, großen zeitschrift ;) - ebenso http://krone.at - die hälfte der links funktioniert nicht ohne javascript (das ist traurig für die großte tageszeitung österreichs, auch wenns ein schundblatt ist)