Ans Ende der Seite scrollen?
Lupinius
- javascript
Salve
Wie kann ich mit Javascript ans Ende einer Seite scrollen? Ohne Effekte oder irgendwas, einfach nur das man das Ende sieht.
Grüße,
Wie kann ich mit Javascript ans Ende einer Seite scrollen? Ohne Effekte oder irgendwas, einfach nur das man das Ende sieht.
sind anker nicht gut genug?
MFG
bleicher
Würde dir auch Anker empfehlen.
Die sind schließlich dafür da und daher semantisch auch korrekt.
@@Lupinius:
Wie kann ich mit Javascript ans Ende einer Seite scrollen?
Gib dem letzten auf der Seite angezeigten Element die ID "ende".
Danach notierst du das Script:
<script type="text/javascript">[code lang=javascript]window.[ref:self812;javascript/objekte/location.htm@title=location].[ref:self812;javascript/objekte/location.htm#hash@title=hash] = "#ende";
</script>[/code]
Oder wegen der Trennung von Inhalt (HTML), Präsentation (CSS) und Verhalten (JavaScript):
<script type="text/javascript" src="gotoEnde.js"></script>
In gotoEnde.js:
window.location.hash = "#ende";
Die Vergabe der ID ließe sich auch mit JavaScript erledigen:
for (var ende = document.body.lastChild; ende.nodeType != 1 || ende.nodeName.toLowerCase() == "script"; ende = ende.previousSibling);
ende.id = "ende";
Warum zum Geier funktioniert das nicht im IE 6? Die Vergabe der ID funktioniert (was sich mittels '#ende {background: yellow}
' sichtbar machen lässt), er springt aber nicht zum Anker, was er bei im HTML vergebener ID problemlos tut.
Live long and prosper,
Gunnar
Hi,
Die Vergabe der ID ließe sich auch mit JavaScript erledigen:
for (var ende = document.body.lastChild; ende.nodeType != 1 || ende.nodeName.toLowerCase() == "script"; ende = ende.previousSibling);
ende.id = "ende";
>
> Warum zum Geier funktioniert das nicht im IE 6? Die Vergabe der ID funktioniert (was sich mittels '`#ende {background: yellow}`{:.language-css}' sichtbar machen lässt), er springt aber nicht zum Anker, was er bei im HTML vergebener ID problemlos tut.
Der scheint die Änderung im DOM nicht rechtzeitig umzusetzen, um die ID beim Anspringen das Ankers über die Zuweisung an location.hash schon zu finden. Sobald du diese Zuweisung mit einem Timeout von einer Millisekunde verzögert aufrufst, funktioniert es bei mir auch mit dem.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
@@ChrisB:
Sobald du diese Zuweisung mit einem Timeout
Ah.
von einer Millisekunde verzögert aufrufst
Äh – warum so viel?
funktioniert es bei mir auch mit dem.
Er gibt sich auch schon mit window.setTimeout(function () { window.location.hash = "#ende"; }, 0);
zufrieden.
▲
Muss man den IE verstehen?
Live long and prosper,
Gunnar
Hi,
von einer Millisekunde verzögert aufrufst
Äh – warum so viel?
Weil ich nicht ...
funktioniert es bei mir auch mit dem.
Er gibt sich auch schon mit
window.setTimeout(function () { window.location.hash = "#ende"; }, 0);
zufrieden.
... so'n ein Geizkragen bin wie du?
Die eine Millisekunde haben wir doch wohl auch noch!!!1elf
Es kommt wieder mal nur darauf an, die Anweisung aus der aktuellen Funktion herauszulösen, und letztere erst mal zum Ende kommen zu lassen.
Nein, versuch's gar nicht erst. Wenn ich nämlich, direkt nach der Zuweisung der ID, per getElementById auf eben dieses Element zugreifen will, dann klappt das problemlos. (Getestet über Zuweisung des einzeiligen innerHTML-Inhaltes des Elements an document.title, also kein alert o.ä., welcher das ganze wieder beeinflussen könnte, weil er ebenfalls eine Unterbrechung der Funktionsausführung darstellt.)
MfG ChrisB
@@ChrisB:
Die eine Millisekunde haben wir doch wohl auch noch!!!1elf
Wie deiner Signatur zu entnehmen ist, kann eine Millisekunde schon den Unterschied ausmachen: Schein oder nicht Schein – das ist hier die Frage.
Live long and prosper,
Gunnar
[latex]Mae govannen![/latex]
von einer Millisekunde verzögert aufrufst
Äh – warum so viel?
funktioniert es bei mir auch mit dem.
Er gibt sich auch schon mit
window.setTimeout(function () { window.location.hash = "#ende"; }, 0);
zufrieden.
Weil es den meisten Browsern ohnehin egal ist
Siehe auch Cheatahs Folgebeitrag
Cü,
Kai
@@ChrisB:
Sobald du diese Zuweisung mit einem Timeout von einer Millisekunde verzögert aufrufst, funktioniert es bei mir auch mit dem.
Sobald man das Dokument nicht lokal, sondern über HTTP aufruft, funktioniert es auch ohne Timeout.
Muss man den IE … – ach, das hatten wir schon.
Live long and prosper,
Gunnar
Gib dem letzten auf der Seite angezeigten Element die ID "ende".
Wieso nicht einfach window.scrollTo nutzen mit der Höhe der Seite?
Eine DOM-Lösung wäre von Vorteil, wenn man wirklich zu einem spezifischen Inhalt springen will. Dann würde bei einem fokussierbaren Element focus() aufrufen bzw. es mit tabindex="-1" fokussierbar machen, sodass focus() möglich ist.
Welche Lösung sinnvoll ist, hängt von dem Grund ab, wieso man dahin scrollen will. Vielleicht will man gar nicht #ende in der URI stehen haben.
Mathias