Chrome behält den Verlauf einer Seite, die vor der Benutzerinteraktion weiterleitetJavaScript

Javascript-Forum
Anonymous
 Chrome behält den Verlauf einer Seite, die vor der Benutzerinteraktion weiterleitet

Post by Anonymous »

Ich suche nach Informationen zu einem Browser -Quirk und einer möglichen Problemumgehung: < /p>
Navigiert zu einer neuen Seite mit den verschiedenen Methoden, die die neue URL auf den Verlaufsstapel schieben: < /p> ...will subsequently allow the user to return to the previous website / state with the back button — but only if the user "interacted" with the page while that state was rendered on screen.
In other words, any page which redirects to a new page before the user has interacted will be prevented from appearing in the browser's history. This prevents the user from using the back button to revisit it, as well as prevents history.go(-1) wie erwartet arbeiten. Es ist so, als ob diese Seite nie existiert hat, einfach weil der Benutzer nicht damit interagierte. Ich habe eine Testseite auf den Coderäumen von W3schools eingerichtet, um dies zu demonstrieren. Beim ersten Besuch des Links zeigt die Site eine Nachricht mit einer Taste fort, um zu bestätigen, dass Sie benutzergenerierte Inhalte anzeigen. Wenn Sie auf die Schaltfläche klicken und dann die Site laden und umleiten lassen (zu example.com ), ohne erneut zu klicken, führt Sie die Schaltfläche Ihres Browsers zurück, um Sie zum Stackoverflow zu erhalten. Dies steht entschieden vor der Seite mit der Schaltfläche, auf die Sie geklickt haben. Wenn Sie vorwärts klicken, werden Sie dann auf example.com weitergeleitet und überspringen die Seite, auf die Sie geklickt haben. Bei den nachfolgenden Besuchen des Links können Sie mit Klicken gegen das Klicken auf die Seite abspielen, um das Quirk zu erleben. das führt die Umleitung durch: < /p>

Code: Select all

setTimeout( ()=> location = 'http://example.com' , 8000 );
< /code>
Mausover -Ereignisse werden nicht als Benutzeraktion angesehen. Weder sind Scrollereignisse. Sie müssen klicken, tippen oder eine Taste drücken. Beachten Sie, dass die Interaktion nicht unbedingt direkt mit der Seite sein muss - sie kann auch mit einem Lesemarketlet sein, das im Seitenkontext ein JavaScript ausführt, oder es kann eine Interaktion mit einem geöffneten Devtools -Fenster sein, das an der Seite angeschlossen ist. < /P>
Es gibt auch keine Zeitlimit. Wenn Sie eine Webseite mit einem Scroll -News -Feed besuchen, den Sie stundenlang gelesen haben (ohne zu klicken), und ein JS -Ereignis zu einer neuen Seite zum Laden führte, können Sie nicht zu der Seite zurückkehren, die Sie gelesen haben. Dokumentiert?  
 Gibt es eine Problemumgehung? Die Antworten legen nahe, dass eine dynamisch erzeugte Einreichung versteckte Form eine potenzielle Problemumgehung ist. Ich habe festgestellt, dass dieser Ansatz  keine < /em> Hilfe macht. Versuchen wir ein kurzes Gedankenexperiment: Sagen Sie, Sie suchen nach etwas bei Amazon, und die Abfrage gibt 50 Seiten Ergebnisse zurück. Angenommen, Sie wollten ein einfaches Benutzerskript erstellen, das auf der Schaltfläche "Nächste Seite" mit setTimeout () 
mit einer Verzögerung von 6 Sekunden auf der Schaltfläche "Nächste Seite" aufgerufen wird. Angenommen, Sie wollten gelegentlich die Liste der Elemente nach unten scrollen, da Ihr Skript automatisch jede Seite der Ergebnisse durchläuft. Angenommen, Sie haben irgendwann etwas Interessantes gefunden - aber bevor Sie darauf klicken (oder interagieren), löst das Skript eine Navigation auf die nächste Seite aus. Wenn Sie dann auf die Back -Taste drücken, werden Sie bis zum Anfang zurückgegeben - das heißt, die letzte Seite, auf die Sie geklickt haben (interagiert mit), die wahrscheinlich die erste Seite der Ergebnisse ist. Durch Drücken der Taste vorwärts führt Sie zu der Seite zurück, die nach der Seite mit dem Element, an dem Sie interessiert waren. Zugegebenermaßen können Sie in diesem Beispiel Ihr Skript deaktivieren und die Tasten auf der Seite mit den Navigationsschaltflächen verwenden, um eine Seite in den Ergebnissen zurückzukehren, und dann zu dem Ort, an dem sich das interessante Element befand, erneut abzusetzen. Wenn Sie stattdessen eine Liste von URLs in LocalStorage gespeichert haben, die Sie mit einem gespeicherten Indexwert durchgesetzt haben, der jede Ausführung inkrementierte. In diesem Fall gibt es keine Navigation auf der Seite, die Sie zurückbringt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post