seite soll bei onload nach unten springen
yannick
- javascript
hallo leute,
ich mache noch nicht so lange mit dem programmieren herum, soll heissen das ich mich auch mit javascript erstmal anfreunden muss. ich habe folglich auch ein kleines problem, denn ich möchte beim laden einer seite das diese automatisch nach unten springt und den unteren inhalt zeigt. wie kann man das realisieren?? wahrscheinlich mit einer onload-funktion aber wie muss die funktion an sich aussehen? wenn hier einer so nett wäre und einem neuling weiterhelfen würde, würde ich mich echt freuen. danke mal so im voraus
yannick
Hallo Jannick,
Wenn ich Dich richtig verstanden habe, brauchst Du dazu garnicht zwangsläufig JavaScript. Du kannst einfach auf einen "Anker" am ende der Seite verlinken.
Beispiel:
<a href="seite.html#anker">klick</a>
und dann auf der entsprechenden Seite ganz unten:
...
<a name="anker">...</a>
</body>
</html>
Wenn Du allerdings willst, dass auch bei von Anderen gesetzte Links (also "<a href="http://domain.xy/seite.html">klick</a>") die Seite nach unten Springt, brauchst Du doch JS. In http://selfhtml.teamone.de findest Du sicher was dazu. Stichwort: "scroll" oder "page-position" (wenn ich mich nicht irre).
Sonst mal die Suche (http://selfsuche.teamone.de/cgi-bin/such.pl) ausprobieren. Da findet sich meist viel.
viel Erfolg + schö
Stefan
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 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