JS: display:none beim Laden der Seite

  • Salut,

    folgendes Problem:

    Ich verwende auf meiner Seite Aufklappmenüs, die mittels der CSS-Styles display:none und display:block gewechselt werden. Jetzt möchte ich beim Laden des Dokumentes einige Blöcke automatisch erst mal ausblenden.
    Gleichzeitig möchte ich aber verhindern, dass auf nicht JS-kompatiblen Browsern diese Bereiche nicht angezeigt werden, weshalb ich nicht im CSS-File display:none setzen kann. Außerdem wäre es sehr umständlich, das im onload-Ereignis des HTML-Dokumentes unterzubringen.

    Gibt es eine Möglichkeit das direkt irgendwie im entsprechenden div-Tag unterzubringen? Möglichst standardkonform zu XHTML 1.0 Strict?


    Danke im Voraus,

    Stefan

  • Also erstmal hat CSS nicht das geringste mit JS zu tun.
    Du kannst mit JS zwar CSS Eigenschaften manipulieren, aber selbst wenn der Browser kein JS unterstützt, werden die Stylesheets trotzdem angezeigt.
    Da brauchst du also eher keine Bedenken zu haben.

    Falls du meinst, dass die Menüs nicht angezeigt werden, wenn das onMouseOver (oder anderes) Ereignis nicht gestartet werden kann, falls der Browser kein JS unterstützt, hast du glaube ich Pech gehabt.
    Eine andere Möglichkeit gibt es meiner Meinung nach leider nicht!

    Du kannst nur überprüfen, ob der Browser JS unterstütz, und dann in den Div-Tag die entsprechende CSS Class einbinden.

    Viele Grüße

    Mir nicht

  • Salut,

    selbstverständlich hat JS nichts mit CSS zu tun. Wie du richtig erkannt hast, setze ich die CSS-Eigenschaften per JS.

    Es geht mir darum, dass per default ausgeblendete Divs bei nicht JS-kompatiblen Browsern beim Laden nicht versteckt werden (da sie ja auf Grund fehlenden JS nicht eingeblendet werden können).

    Falls jemand noch eine Idee hat, wäre ich dankbar, ansonsten werde ich es wohl doch in onLoad auslagern müssen.


    Stefan

  • entweder in onload rein (geht das auch im div oder nur im body tag ? )
    oder direkt das js ausführen nachdem das div geladen ist
    mehr möglichkeiten haste nicht, denk ich

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Zitat


    oder direkt das js ausführen nachdem das div geladen ist


    Wenn der Benutzer kein JavaScript eingeschaltet hat, dann kann auch keines ausgeführt werden.

    Aber wenn JS aus ist, dann funktioniert, doch auch nicht das obLoad oder?

    Viele Grüße

    Mir nicht

  • ja, stadnrad auf display:block und dann im div onload (wenns geht) display auf none setzen
    sollte doch gehn ?
    damit sehen die user ohne js das immer und die mit erst wennse sollen :)

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Salut,

    naja, habe das jetzt mal probiert:

    HTML
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <body>
        [url='#']Klick![/url]
        <div id="paneltohide" style="width: 100px; height: 100px; background:red; display:block;"
            onload="document.getElementById('paneltohide').style.display = 'none';">
    
        </div>
      </body>
    </html>


    Funktioniert aber leider weder in FF2.0, IE7.0 oder Opera9.1. Werde mein PHP-Skript jetzt umbauen, dass ich das ins onload des Body-Tag bekomme.


    Trotzdem Danke euch beiden,

    Stefan

  • wenn du sowieso schon eine funktion im body-onload aufrufst, pack die zeile da einfach mit rein ;)

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Salut,

    zur Zeit tue ich das nicht. Die Gesamtseite wird von mehreren Plugins zusammengebastelt, wobei diese keinen Zugriff auf den kompletten HTML-Text haben, sondern ihr Ergebnis an eine höhere Instanz zurückgeben. Daher gestaltet sich das Einbauen in das onload-Ereignis des Body-Tags etwas schwieriger.
    Im Endeffekt werde ich jetzt die PlugIns als zusätzlichen Rückgabewert zurückgeben lassen, welcher JS-Code beim Laden ausgeführt werden soll.
    Das wollte ich vermeiden, werde aber wohl nicht drum rumkommen :roll:


    Stefan

  • japs, das meinte ich mit der 2. möglichkeit aus meinem ersten post ^^
    wollte es eig rein editieren in meinen letze post, war aber beschäftigt ;)
    das sollte so auch im ff gehen und deine probleme beheben ;)

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!