Heim > Web-Frontend > js-Tutorial > Wie kann ich Browser-Zurück-Button-Klicks zuverlässig erkennen und die In-Page-Navigation erzwingen?

Wie kann ich Browser-Zurück-Button-Klicks zuverlässig erkennen und die In-Page-Navigation erzwingen?

Mary-Kate Olsen
Freigeben: 2024-12-13 10:15:11
Original
513 Leute haben es durchsucht

How Can I Reliably Detect Browser Back Button Clicks and Enforce In-Page Navigation?

Browserübergreifende Technik zum Erkennen von Browser-Zurück-Button-Klicks und Erzwingen der In-Page-Navigation

Erkennen des Browser-Zurück-Button-Klicks und Erzwingen der Verwendung eines In-Page-Navigationssystems mithilfe eines Hashtag-Systems (#) kann sein herausfordernd.

Erkennung der Browser-Zurück-Schaltfläche

Der herkömmliche Ansatz, window.onhashchange allein zu verwenden, ist nicht zuverlässig, da er auch ausgelöst wird, wenn In-Page-Elemente den Hash ändern. Um dies zu beheben, wird eine neuartige Technik eingesetzt, die document.onmouseover, document.onmouseleave und ein boolesches Flag (window.innerDocClick) nutzt. Wenn die Maus des Benutzers den Dokumentbereich betritt, wird window.innerDocClick auf true gesetzt, und wenn er den Dokumentbereich verlässt, wird es auf false gesetzt. Dies ermöglicht den folgenden window.onhashchange-Handler:

window.onhashchange = function() {
    if (window.innerDocClick) {
        window.innerDocClick = false;
    } else {
        if (window.location.hash != '#undefined') {
            goBack();
        } else {
            history.pushState("", document.title, window.location.pathname);
            location.reload();
        }
    }
}
Nach dem Login kopieren

Erzwingung der In-Page-Zurück-Schaltfläche

Um die Rücknavigation ausschließlich über die In-Page-Zurück-Schaltfläche zu steuern, Ein Verlaufsarray (window.location.lasthash) wird verwendet, um frühere Hashes zu speichern, während der Benutzer die Schnittstelle durchläuft. Eine In-Page-Zurück-Schaltflächenfunktion (goBack) verwendet dieses Array, um zur vorherigen Seite zu navigieren.

function goBack() {
    window.location.hash = window.location.lasthash[window.location.lasthash.length-1];
    window.location.lasthash.pop();
}
Nach dem Login kopieren

Rücktaste unterdrücken

Um zu verhindern, dass der Benutzer sie verwendet Wenn Sie die Rücktaste drücken, um die Zurück-Schaltfläche auszulösen, kann das folgende Code-Snippet hinzugefügt werden:

$(function(){
    /*
     * this swallows backspace keys on any non-input element.
     * stops backspace -> back
     */
    var rx = /INPUT|SELECT|TEXTAREA/i;

    $(document).bind("keydown keypress", function(e){
        if( e.which == 8 ){ // 8 == backspace
            if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
                e.preventDefault();
            }
        }
    });
});
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Browser-Zurück-Button-Klicks zuverlässig erkennen und die In-Page-Navigation erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage