chullain: "Bitte warten" Seite bei längerer Beladung

Hallo,

als erstes möchte ich sagen, dass ich nach sowas schon gesucht habe, und einige Ansätze dafür auch gefunden habe, jedoch funktioniert das alles nicht so, was ich möchte. Mit OnLoad im Body-Tag und ein IFrame aufrufen, funktioniert es nicht, weil der Ladevorgang einfach zu lange dauert und die JavaScript-Methode erst zum Schluss aufgerufen wird.

Ich habe mir folgendes gedacht, ist es möglich, dass man eine "Bitte-warten" Seite anzeigt, während man die eigentliche Seite lädt und erst wenn die Seite geladen ist, auch diese angezeigt wird.

Mir fehlt da keine richtige Herangehensweise ein, wie man sowas lösen kann.

Hat jemand ein Tip für mich oder in etwa ne Bauanleitung?

Ich würde mich über jede Antwort freuen.

Gruss,
chullain

  1. Moin,

    Mir fehlt da keine richtige Herangehensweise ein, wie man sowas lösen kann.

    Hmm. Von mir erstmal die Frage: Wozu soll das gut sein? Jeder, der das Internet benutzt ist sich dessen bewußt, daß er warten muß, während eine Seite lädt.

    MfG
    MarkX.

    1. Hmm. Von mir erstmal die Frage: Wozu soll das gut sein? Jeder, der das Internet benutzt ist sich dessen bewußt, daß er warten muß, während eine Seite lädt.

      im übrigen hat auch jeder browser eine statusanzeige bzw einen statusbalken, der zeigt, wie langs noch dauert ;)

      aber ggf. meint der op diese coolen ajax-loading-gifs, da diese technik normalerweise am statusbalken des browsers vorbei arbeitet

      was das aber mit iframes zu tun hat, weiss ich nicht

      1. Yerf!

        im übrigen hat auch jeder browser eine statusanzeige bzw einen statusbalken, der zeigt, wie langs noch dauert ;)

        Die Glaskugel-Extension zum Abschätzen der Dauer von Datenbankzugriffen am Server ist aber leider häufig recht buggy...

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
      2. Hallo,

        vielen Dank schon mal für die schnellen Antworten. Das Problem ist, dass die Seite schon seine 5-6 Sekunden braucht, bis sie geladen ist, das lässt sich leider nicht umgehen...ich habe mich schon zu Tode optimiert...in der Anwendung habe ich auch schon so ein IFrame, mit so einem schönen Ladebalken, das klappt auch wunderbar, nur wenn die Seite zum ersten Mal geladen wird, funktioniert das mit dem IFrame nicht, weil JavaScript erst zum Schluss des Ladevorgangs ausgeführt wird...darum brauche ich da ne Idee, wie man sowas noch angehen kann...

        Gruss,
        chullain

        1. vielen Dank schon mal für die schnellen Antworten. Das Problem ist, dass die Seite schon seine 5-6 Sekunden braucht, bis sie geladen ist, das lässt sich leider nicht umgehen...ich habe mich schon zu Tode optimiert...

          dar man das mal sehen?
          eine seite wo der browser zum rendern 5-6 sekunden braucht? oder bis der server sie generiert und stückerlweise (chunked) schickt?

          in der Anwendung habe ich auch schon so ein IFrame, mit so einem schönen Ladebalken, das klappt auch wunderbar, nur wenn die Seite zum ersten Mal geladen wird, funktioniert das mit dem IFrame nicht, weil JavaScript erst zum Schluss des Ladevorgangs ausgeführt wird...darum brauche ich da ne Idee, wie man sowas noch angehen kann...

          nochmal: was braucht lang?
          das generieren am server oder das rendern?

          kann man das ggf sehen?

          javascript kannst du übrigens während dem reflow-prozess auch ausführen, document.write ist da zb geeignet - das bremst den ladevorgang aber noch mehr aus, besonders bei browsern mit langsamen js-engines (der internet explorer 6 ist so ein kandidat)

        2. ... weil JavaScript erst zum Schluss des Ladevorgangs ausgeführt wird...

          warum muss das bei dir so sein? Es gibt doch noch andere Möglichkeiten als onload um Scripte zu starten.

    2. [latex]Mae  govannen![/latex]

      Mir fehlt da keine richtige Herangehensweise ein, wie man sowas lösen kann.

      Hmm. Von mir erstmal die Frage: Wozu soll das gut sein? Jeder, der das Internet benutzt ist sich dessen bewußt, daß er warten muß, während eine Seite lädt.

      Ich empfinde es als angenehm, wenn ich weiß, daß die Seite irgendwas macht. Wenn nicht, weiß ich nie, ob es nun einen Serverfehler gegeben hat. der das Laden der Seite beendet hat, ob meine Internetverbindung plötzlich lahmt oder ob die Seite irgendwas macht.
      In den ersten beiden Fällen schließe ich die Seite oder versuche einen Reload, im dritten Fall warte ich länger als üblich.

      Cü,

      Kai

      --
      Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
      selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
      Mein Selfhtml-Kram
      1. Ich empfinde es als angenehm, wenn ich weiß, daß die Seite irgendwas macht. und dabei verlässt du dich auf ein animiertes gif? welches in deinem cache liegt und sich defintiv auch weiterdreht, wenn der server lichterloh in flammen steht ...

        1. [latex]Mae  govannen![/latex]

          [kaputtes Quoting repariert]

          Ich empfinde es als angenehm, wenn ich weiß, daß die Seite irgendwas macht.

          und dabei verlässt du dich auf ein animiertes gif? welches in deinem cache liegt und sich defintiv auch weiterdreht, wenn der server lichterloh in flammen steht ...

          Falscher Ausgangspunkt. Es geht hier darum, dem Nutzer überhaupt zu signalisieren, "Nein, daß es länger dauert liegt nicht daran, daß ein Fehler aufgetreten ist, die Seite muß nur noch Daten laden/etwas berechnen/wasauchimmer". Ohne eine solche Angabe tappt der Nutzer nämlich völlig im Dunkeln und wundert sich, warum keine Inhalte erscheinen. *Wie* man das signalisiert und die Verlässlichkeit dieser Angabe sind eine andere Baustelle.

          Cü,

          Kai

          --
          Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
          selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
          Mein Selfhtml-Kram
  2. Hi,

    Hat jemand ein Tip für mich oder in etwa ne Bauanleitung?

    Die gängige Vorgehensweise - für den der meint sowas zu brauchen:

    Auf der _vorherigen_ Seite (innerhalb Deiner Anwendung) blendest Du ein Div mit einem dieser schönen Drehdinger ein. Das steht automatisch so lange, bis die angeforderte Seite kommt. Auf einer Startseite würde ich sowas grundsätzlich nicht machen, vor allem nicht für 5-6 Sekunden.

    Bei Ajax ist das was anderes, da koppelst Du ein/ausblenden des Drehdings mit dem handler, der den Request auswertet.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  3. Hallo,

    hatte mal so eine lange Liste mit Mouseover- Feldern. Während des Ladens wurden da schon Aktionen ausgelöst, weil die Maus halt undefiniert "irgendwo" steht.

    Habe ein div mit dem Text "Liste wird geladen" angezeigt und die Liste in ein anderes div geladen display:none.

    Erst nach vollständiger Ladung wurde der verdeckte div per onLoad freigegeben.

    Die Aufforderung "Bitte Warten" empfinde ich als Zumutung. Warum wird mir vorgeschrieben, was ich während der Ladezeit tun soll?

    Interessanter ist dies: "Trinke ein Bier auf mein Wohl, es dauert noch ..."

    Kalle

  4. Hallo,

    das Problem ist ja, dass es die Starseite ist, die so lange braucht. Wenn ich schon eine Seite geladen habe, dann kann ich auch auf dieser Seite ein Div einbauen, welches in der "Zwischenzeit" angezeigt wird, bis der nächste Request geladen wurde...das ist kein Problem. Das Problem ist eben, das erste Laden der Seite.

    Sehen kann man die Seite nirgendwo, ist eine interne Anwendung in der Firma...

    Gruss,
    chullain

    1. Meine Anwendung ist so aufgebaut. Ich hab ein Frameset, in dem verschiedene Frames aufgerufen werden. Allerdings braucht der eine Frame beim ersten Aufruf ziemlich lange. So würde ich gerne wissen, ob man irgendwie den einen Frame während des Ladens verstecken kann, stattdessen man ein Frame anzeigt mit "Bitte etwas Geduld" und nach dem Laden den eigentlichen Frame wieder anzeigt.

      Mit der DIV Methode habe ich es mal versucht, aber es bringt trotzdem nicht viel. Auch wenn ich den Div nicht anzeige, lädt er den DIV und zeigt erst die Seite an, wenn auch dieser DIV geladen ist.

      Gruss,
      chullain

    2. Hallo!

      das Problem ist ja, dass es die Starseite ist, die so lange braucht. Wenn ich schon eine Seite geladen habe, dann kann ich auch auf dieser Seite ein Div einbauen, welches in der "Zwischenzeit" angezeigt wird, bis der nächste Request geladen wurde...das ist kein Problem. Das Problem ist eben, das erste Laden der Seite.

      Wie wär's mit einer Vorschaltseite[1]? Sprich einer Webseite, die anstelle deiner "Startseite" eine "leere Seite" lädt, welche per Ajax die notwendigen Daten nachlädt. Im Noscript-Teil solltest du einen Direktlink zur "Startseite" bereitstellen.

      [1] Im Allgemeinen finde ich diese nicht besonders toll, es scheint mir in diesem Fall aber sinnvoll.

      Viele Grüße
      Thorsten

      --
      ie:( fl:( br:< va:) ls:& fo:) rl:° n4:° ss:) de:> js:| ch:? sh:( mo:| zu:)
  5. Hi,

    Mir fehlt da keine richtige Herangehensweise ein, wie man sowas lösen kann.

    "Bitte warten"-Text mit JS als HTML erzeugen, und nach Beendigung der Warterei, spätestens im OnLoad-Event, den Text ausblenden. Eventuell den eigentlichen Seiteninhalt nicht darstellen lassen, und dann anschließend erst einblenden.

    Gruß, Cybaer

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