Helpdesk
Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung
weitere Rubriken
PhilosophieTräumeOrteEsoterikLiteraturAstronomieHelpdeskGruppenGamingFilmeMusikClashVerbesserungenAllmysteryEnglish
Diskussions-Übersichten
BesuchtTeilgenommenAlleNeueGeschlossenLesenswertSchlüsselwörter
Schiebe oft benutzte Tabs in die Navigationsleiste (zurücksetzen).

jquery scrollto für Back-Button?

67 Beiträge ▪ Schlüsselwörter: Jquery, Scrollto ▪ Abonnieren: Feed E-Mail
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

24.07.2012 um 19:04
Hi, ich benutze dieses Script um weich zu einem Anker auf meiner Page zu scrollen:

http://www.torakosmos.de/scrollto.js (Archiv-Version vom 18.02.2013)

Es benötigt jquery.

Es funktioniert, aber der "back" Button im Browser funktioniert nun damit nicht mehr wie er soll. Weiß jemand Abhilfe? Und eigentlich sollte dann beim Klick auf "Back" auch weich zum letzten Ausgangspunkt gescrollt werden...


melden

jquery scrollto für Back-Button?

26.07.2012 um 11:52
der back button wird so nicht funktionieren, das hat damit zu tun, dass dieser back button keinen js quellcode ausführen kann. somit springt er zu dem letzten zustand der webseite zurück.
im übrigen ist das ein riesen problem, wenn man dynamische inhalte per ajax nachläd, und dann den back button benutzt. wirst wohl damit leben müssen. Am besten baust du dir einen zurück knopf, der den back button ersetzt (natürlich an einer anderen, gut sichtbaren stelle)


melden

jquery scrollto für Back-Button?

26.07.2012 um 12:04
Hier mal nen beispiel:

http://www.paulund.co.uk/how-to-create-an-animated-scroll-to-top-with-jquery
DEMO: http://www.paulund.co.uk/playground/demo/jquery_scroll_to_top/ (Archiv-Version vom 13.06.2012)


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

26.07.2012 um 13:45
das mit dem eigenen back und/oder top button ist ne gute idee. ich kann mir ja den letzten anker in einer variable merken. mal sehn.

aber wenn ich auf das scrollen beim normalen back button verzichte, kann ich es dann so machen, dass man damit wenigstens zum zuletzt ausgewählten anker kommt? im moment funzt nämlich nicht mal das. man kann offenbar garnicht vorhersagen wo man da beim click auf das standard back landet.


melden

jquery scrollto für Back-Button?

26.07.2012 um 15:33
also das problem bei der ganzen sache ist das javascript.
schau dir mal dieses beispiel an:

http://de.selfhtml.org/html/verweise/anzeige/a_name.htm (Archiv-Version vom 04.08.2012)

klickst du da auf z.b. kapitel 2 erscheint oben in der url a_name.htm#kapitel2
und das ist der knackpunkt. das "#kapitel2" ist der anker der angesteuert wird. drückst du dann auf die back taste, funktioniert alles wunderbar, da die browser sich nach der url richten.

jquery hingegen setzt hinter die url keine neuen zeichen, sodass der browser denkt, du hättest auf keinen anker geklickt, und verweist somit auf die vorgängerseite. wie gesagt lässt sich dieses problem grundsätzlich nicht so einfach umgehen. wirst wohl oder übel damit leben müssen, oder aber du verzichtest auf den scroll effekt und nutzt normale html anker.


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

26.07.2012 um 22:21
ich hab's jetzt mit nem eigenen back button und nem stapel array für die zuvor ausgewählten anker. aber wenn man auf eine vorherige seite zurück kehrt dann hat er den stapel der vorherigen seite natürlich vergessen ... ist aber besser als garnix, oder gehts noch besser?


melden

jquery scrollto für Back-Button?

27.07.2012 um 12:32
ich würde es so machen:

du sammelst in einem array - wie du es bereits tust - die angeklickten anker.
drückt der user nun auf den selbst gemachten zurück button, wird das letzte element im stapel angesprungen und aus der liste entfernt. ist die liste hingegen leer, benutzt du einfach die historyback funktion (entweder über js direkt, also javascript:history.back(), oder über jquery (weiss grad nicht den funktionsaufruf dafür)).

das sorgt dafür, dass der nutzer dann auf die vorgängerseite springt. mehr würde ich persönlich nicht machen. denn je nachdem kann ein seitenübergreifendes array ganz schön lang werden. aber natürlich kannst du gerne auch alle anker von jeder seite speichern. das ist dir überlassen.


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 12:43
@alliswrong

mache ich schon so. allerdings bringt mich das history.back() wieder zurück zum vorher gewählten anker anstatt zur vorherigen seite, weil der vorhin gewählte anker auch in die history aufgnommen wird. daher benutze ich statt history.back() ein location = referrer. und wie kann ich die anker der früheren seiten mit merken? vergisst der browser nicht alle varis wenn die seite gewechselt wird?


melden

jquery scrollto für Back-Button?

27.07.2012 um 13:11
also um seitenübergreifende inhalte (arrays) zu übergeben, muss man etwas tricksen (mit php + js).
am einfachsten wäre es so:

du erstellst eine "speicherAnker.php". diese wird aufgerufen, sobald ein user einen anker anklickt (mit jquery einen ajax request an die seite schicken, etwa sowas wie speicherAnker.php?seite=meineSeite&anker=xyz).
die speicherAnker.php hingegen, füllt ein session array mit dem anker (etwa $_SESSION['seite']['anker'] = 'xyz';). gleichzeitig speicherst du die anker in deinem js array für die aktuelle seite.

Sobald ein user nun auf den selbst gebauten back button klickt und das js array leer ist, springt der browser auf die seite davor zurück. dort muss nun dein php script das javascript für die anker zusammen bauen. sprich: du musst ganz zu beginn jeder seite etwas in der art machen:

<script language="javascript">
var $anker = array("<?php echo $_SESSION['meineSeiteAusDerUrl']['anker1']; ?>", "<?php echo $_SESSION['meineSeiteAusDerUrl']['anker2']; ?>"....);
</script>

dann kannst du auf das array $anker auf js seite zugreifen. Das ganze ist allerdings relativ aufwändig. Ich bezweifel ob sich dies lohnt. Allerdings sollte es für geübte leute innerhalb von 30 Minuten stehen.

[Edit]
Oder du benutzt kekse ;)


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 15:31
Habe ich bei benutzung von $_SESSION eine kryptische zeichenfolge in der url?
@alliswrong


melden

jquery scrollto für Back-Button?

27.07.2012 um 15:34
@AnGSt
es kann sein, dass deine session id (ein md5 hash) anschließend als get parameter in der url erscheint.

[edit]
du musst aber am anfang deiner haupt php seite ein session_start(); machen, damit sessions funktionieren


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 15:36
@alliswrong

Ich bin grad am suchen nach beispielen. aber wenn diese id in der url auf taucht isses für mich ungut. wer will das haben?


melden

jquery scrollto für Back-Button?

27.07.2012 um 15:41
@AnGSt
eigentlich dürfte die session in der url nicht mehr angezeigt werden.
hast du schon mal mit php sessions gearbeitet?

[edit]
hier nen tutorial:
http://www.php-einfach.de/php-tutorial/php-sessions.php


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 15:43
@alliswrong

ich hab mal drüber gelesen. da einzige was ich jetzt bisher verstehe ist, dass alle variablen die an $_SESSION gehängt werden, den Wechsel zwischen Seiten überleben.


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 15:46
@alliswrong
Und wie ich jetzt sehe kann man statt $_SESSION auch session_register() verwenden, um beliebige andere variablen aufrecht zu erhalten.


melden

jquery scrollto für Back-Button?

27.07.2012 um 15:50
@AnGSt
genau. im grunde arbeitet die php session so, dass bei session_start(); eine lokale datei auf dem server abgelegt wird. der dateiname ist hierbei die session id (md5 hash).
die datei kannst du dir mit nem ftp prog meistens ansehen (hierfür gibt es meistens einen session ordner).

in diese datei werden alle werte geschrieben.
zur verwendung brauchst du eigentlich nur session_start(); und session_destroy();
Du brauchst nicht extra mit session_register(); variablen anlegen. das geht auch einfach per $_SESSION['meinevariable'] = "xyz";

der vorteil ist einfach, dass du die daten so lange zur verfügung hast, bis du session_destroy(); aufruft.


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 15:54
ich blicke nicht wie mein array aufgebaut sein muss. ich will ja erstens den namen aller besuchten seiten darin merken, und dann zu jeder seite die aufgerufenen anker. @alliswrong


melden

jquery scrollto für Back-Button?

27.07.2012 um 15:57
@AnGSt
du brauchst ein multidimoensionales array. im grunde eine einfache matrix die etwa so aussehen muss:


|SEITENNAME|ANKER|
|Startseite |XYZ |
|Kontakt |ABC |
|Kontakt |zzzz |

usw...

das ganze geht so:

$_SESSION['SEITENNAME']['ANKER0'] = 'ANKER1';
$_SESSION['SEITENNAME']['ANKER1'] = 'ANKER2';
.....
$_SESSION['ANDERESEITE']['ANKER0'] = 'ANKER1';
....
usw...


melden
AnGSt Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

jquery scrollto für Back-Button?

27.07.2012 um 15:58
also soll ich die url der seite als indexnamen verwenden?


melden

jquery scrollto für Back-Button?

27.07.2012 um 16:01
kannst du machen, würde ich aber nicht so machen.
es gibt da drei wege:

1) Komplette url als index - sehr schlecht, wegen sonderzeichen
2) Du cuttest dir aus der url den seitennamen raus - gut, aber anfällig für irgendwelche kiddies
3) Jeder seite einen eindeutigen namen geben - beste wahl

Zu der dritten art kurz was gesagt:
Dazu würde ich einfach in jeder seite eine Variable ganz zu beginn definieren, die z.B. $seitenName lautet. Also etwa $seitenName = 'book', $seitenName = 'kontakt' usw...
Dies würde ich als index nehmen. geht am einfachsten.


melden