Browser stellen eine Liste der Seiten bereit, die innerhalb einer Client-Sitzung über das window.history
-Objekt aufgerufen wurden. Damit kann der Client-Code durch die Liste vor- und zurückgehen (mit history.back()
, history.forward()
und history.go()
).
Aber wie kann der Client-Code wo im Verlauf der aktuellen Seite bestimmen? Wenn der Client beispielsweise die Seiten A, B und C aufruft, enthält der Verlauf drei Elemente, und das aktuelle Verlaufselement (oder der aktuelle Status) wird für Seite C verwendet. Wenn der Benutzer dann auf die Schaltfläche "Zurück" klickt, wird der aktuelle Seite ist jetzt B. Das history.length
ist jedoch immer noch 3, was die Tatsache widerspiegelt, dass insgesamt drei Seiten aufgerufen wurden. Wie stellen wir fest, dass der Client derzeit in Position 2 in der Geschichte ist?
Ein spezifischeres Problem ist, dass ich feststellen möchte, ob ich am ersten Element im Verlauf positioniert bin, so dass ich einen 'Schließen'-Knopf anzeigen kann, der die Seite schließt (vorausgesetzt, window.opener
ist nicht null) ; An jeder anderen Stelle in der Geschichte möchte ich stattdessen eine Schaltfläche "Zurück" anzeigen, die zur vorherigen Seite führt.
Dies scheint eine seltsame Unterlassung zu sein, dass es keinen 'aktuellen Index' in das Historienobjekt gibt.
Hinweis: Dies ist vergleichbar mit Frage # 12895940 , unterscheidet sich aber darin, dass ich wirklich nur wissen muss, ob ich bin am ersten Ort in der Geschichte positioniert.
Das Einzige, was mir einfällt (das funktioniert nur in HTML5 + -Browsern), ist etwas in etwa:
%Vor% Dadurch wird beim Laden der Seite ein Statusobjekt auf den Verlaufsstapel geschoben. (Der typeof
Check ist erforderlich, um sicherzustellen, dass der Browser die Methode HTML5 replaceState()
unterstützt.)
Später kann ich überprüfen, ob das aktuelle Historienobjekt das erste in der Liste ist, das ersetzt wurde:
%Vor%Dies scheint für das, was ich brauche, angemessen zu sein.
Tags und Links javascript