LiveSucks: seite soll bei onload nach unten springen

Beitrag lesen

Hallo Stefan,

danke erstmal für deine antwort aber das kenne ich auch, nur wie mache ich das zusammen mit dem onLoad, sodass es automatisch beim laden der seite ruterscrollt. kannst du mir da auch mal bitte einen tipp geben??? Danke erstmal.

Yannick

Hallo Yannick !

Ich bin nzwar nicht der Stefan, aber mein Sendungsbewusstsein bzw. Mitteilungstrieb wurde trotzdem geweckt.
Ich weiss was ! Aber nur vielleicht. Jedenfalls wirds langatmig.

Man braucht zwar vielleicht JavaScript, aber kein onLoad:
Beim Einlesen der Seite wird die Seite normalerweise immer komplett eingelesen. Wenn der Bildschirmdarstellungsinhalt länger wird als das Anzeigefenster, wird zwar der Bildschirm nicht gescrollt, aber der zugrundeliegende Quelltext wird/wurde trotzdem komplett eingelesen und ausgeführt.
Beim Einlesen werden alle Skripte ausgeführt, und zwar in der Abfolge, in der sie in den Quelltext eingefügt wurden.
D. h. ein Skript am Ende des Quelltextes wird/wurde auch dann ausgeführt, wenn man das Dokumentenende auf der Bildschirmanzeige grade nicht sieht.

Man braucht also nur ganz ans Ende des HTML-Zeugs noch ein Skript anzufügen, welches die eingelesene Seite abscrollt. Ganz ohne eventHandler.
Selbiges Skript wird beim Laden der Seite, wenn sie ansonsten schon komplett da ist, als letztes eingelesen und ausgeführt und scrollt die Seite runter.

In JavaScript gibt es den Befehl windows.scrollTo(x,y).
Da kann man für x und y Koordinaten angeben, zu denen gescrollt wird.
Für x würde ich 0 setzen (ganz links), für y die Seitenhöhe.

Es gibt mal wieder das Problem, dass der Wert, der die Seitenhöhe angibt, bei Netscape JavaScript woanders liegt, als bei Internet-Explorer-JScript.
Bei Netscape findet man ihn im Objekt document.height,
bei IE findet man ihn in document.body.scrollHeight.

Man muss also rausfinden, welcher Browser grad eingesetzt wird, und
entsprechend verzweigen.

Man kann sich da behelfen:
Das Objekt document.layers gibt es nur beim Netscape.
Via "document.layers?" wird also auf Existenz dieses Objektes getestet.
Wenn es da ist, hat man offensichtlich Netscape und muss den Scroll-Befehl mit dem Wert von Netscape ausführen. Ansonsten nimmt das Script den Wert von Internet-Explorer.

Syntax:
Aussage? Aktion,wenn Aussage wahr : Aktion, wenn Aussage falsch;

Ein Skript am Seitenende, welches die Seite abscrollt, könnte also
wie folgt aussehen:

.
.
.
<script>
<!--
document.layers? window.scrollTo(0, document.height) : window.scrollTo(0, document.body.scrollHeight);
-->
</script>
</body>
</html>

Problem:

Die Seite scrollt jetzt immer, egal, von wo man die Seite grade aufruft. Vielleicht will man das aber gar nicht immer so haben.

Man könnte in diesem Fall eine if - Bedingung einbauen, sodass der Scrollvorgang nur ausgeführt wird, wenn selbige erfüllt ist, etwa das Vorhanden- bzw. true-sein einer bestimmten Boole'schen Variable in einem Navigationsscript eines Framesets, von dem aus die Seite aufgerufen wird.

Das würde dann so aussehen:

.
.
.
<script>
<!--
if (eval('parent.frames['NameDesNavigationsscriptFrames']'))
{
 if (eval('parent.frames ['NameDesNavigationsscriptFrames']').BoolVariable == true)
 {document.layers? window.scrollTo(0, document.height) : window.scrollTo(0, document.body.scrollHeight);}
}
-->
</script>
</body>
</html>

Wenn es den Frame mit Navigationsscript gibt,
dann: Wenn die Boolsche Variable im Frame mit Navigationsscript
      auf true gesetzt ist,
      dann: scrollen.

Syntax:

if (Aussage) {Aktion, wenn Aussage wahr} else {Aktion, wenn Aussage falsch},
wobei else ... weggelassen werden kann, was gleichbedeutend wäre mit
else {}  .

Hoffe, meine Ausführungen helfen.

Wie gesagt:

LiveSucks