molily: Ladeseite

Beitrag lesen

Gibt es eine Seite (A), die während ihrer Laufzeit eine andere Seite (B) im voraus lädt aber noch nicht anzeigt. Beim Fertigstellen des Ladens würde dann sofort zur Seite B gewechselt werden und müsste dann nicht mehr geladen werden.

Prinzipiell könnte man das mit zwei Seiten tun und mit JavaScript Seite B in den Cache laden. Zum Beispiel mit einem unsichtbaren iframe, dessen load-Event man abwartet und dann mit location.href die Seiten auswechselt. Schematisch:

<iframe style="display:none" src="URIvomSeiteB" onload="window.location.href = this.src;"></iframe>

Allerdings findet hier durch die location.href-Zuweisung ein Wechsel statt, bei dem Seite B unter Umständen noch einmal geladen wird bzw. der Browser einen Conditional-GET sendet, also kurz prüft, ob sich die Seite auf dem Server schon geändert wurde oder die zwischengespeicherte Version noch aktuell ist. Damit werden allerdings z.B. PHP-Scripte wieder von neuem angestoßen.

Solche Vorschalt-Ladeseiten haben verschiedene Nachteile. Besser beschreibst du mal, warum du diesen Effekt haben willst, wie die Seite B aufgebaut ist und warum beim Laden lange Zeit nichts erscheint. Läuft da ein serverseitiges Script sehr lange?

Der Benutzer sieht lieber eine schrittweise aufbauende Site, auf der er sich schon orientieren kann, anstatt eine weiße Seite, die dann schlagartig durch eine fertig geladene ersetzt wird. Daher löst man solche Fragen wenn überhaupt in einem Dokument. Das enthält einen Ladehinweis, der beim load-Event ausgeblendet wird:

<script type="text/javascript">
document.write('<p id="ladehinweis">Seite wird geladen. Bitte warten.</p>');
</script>
...Rest der Site...

Das Element kannst du natürlich mit CSS formatieren.

Im einem Script im head:
window.onload = function () {
   // Seite ist fertig geladen, Ladehinweis ausblenden
   document.getElementById("ladehinweis").style.display = "none";
};

Ob das jetzt auf deine Situation passt, weiß ich nicht, dazu müsstest du diese genauer schildern.

Mathias