0

Ich möchte zurück Schaltfläche für meine Anwendung deaktivieren (Ich weiß, das ist dumm, schlechte Benutzererfahrung, gegen die Welt, auch ein Verbrechen!), Aber mein Client möchte seine Zurück-Schaltfläche deaktiviert:). Wie auch immer, ich habe folgendes getan, um die Zurück-Taste zu deaktivieren.Deaktivierung Zurück-Taste in AngularJS mit UI-Router

stelle ich eine Flagge in window.onpopstate Event-Handler wie folgt aus:

window.onpopstate = function() { window.backClicked = true; } 

und in meinem Haupt-Controller gesetzt ist folgendes: wollte

$rootScope.$on('$locationChangeStart', function (event, next, current) { 
       if (window.backButton) { 
        event.preventDefault(); 
        window.backButton = false; 
       } 
      }); 

ich mein Ansatz schlecht, dass wissen?

ich verwendet, um andere beliebte Lösung wie folgt aus:

window.onpopstate = function(event) { 
    history.go(1); // or window.forward() 
    }; 

aber in Chrom hat nicht funktioniert, es nicht zum ersten Mal nicht funktioniert und zwischen den Staaten zirkulieren, und window.forward() nachladen nicht die genauer gesagt: Wenn ich drei Zustände habe, A, B, C mit den entsprechenden URLs /stateA, /stateB und /stateC und der Benutzer im Zustand B ist, drückt er die Zurück-Taste url ändert sich zu /stateA und Status A wird geladen und URL wird geändert zu /stateB aber Zustand B ist nicht geladen und URL ist /stateB aber der geladene Zustand ist A.

Irgendwelche Korrekturen oder Ideen zum letztgenannten Ansatz?

Nur eine Randnotiz, dass ich mit diesem Problem mehr als drei Tage zu kämpfen habe.

+0

das Problem ist, dass es einige ähnliche Anwendungen auf dem Markt gibt, die Schaltfläche deaktiviert deaktiviert haben. Sie sind meist in asp.net Webformularen geschrieben, die etwas einfacher ist, die Zurück-Schaltfläche zu deaktivieren, und das größere Problem ist, dass in einem großen Unternehmen ein einzelner Entwickler nicht so viel Macht hat. – Rachmaninoff

Antwort

0

$rootScope.$on('$locationChangeStart', function (event, next, current) { 
 
       if (window.backButton) { 
 
        event.preventDefault(); 
 
        window.history.forward();// keep redirecting to the same page 
 
       } 
 
     });

Event.preventDefault() finden Sie die nach hinten und auch window.history.forward() halten bleiben die gleichen Seite, verhindern können dies versuchen !!

+0

Ich bin nicht wirklich überzeugt, was der zusätzliche Vorteil des Hinzufügens von 'window.history.forward()' ist, können Sie das näher ausführen? – Rachmaninoff

+0

Wie Sie wissen, lädt die forward() - Methode die nächste URL in der aktuellen Verlaufsliste. Dies entspricht dem Klicken auf die Schaltfläche "Weiterleiten" in Ihrem Browser, wie Sie history.go (1) wissen. es deutlich sagt, Sie werden weitermachen, als Ergebnis werden Sie auf der gleichen Seite bleiben. Hinweise: Es wird alle gängigen Browser unterstützen. –

+0

ohne Verwendung von 'window.history.forward()' Ich bleibe auch in der aktuellen URL, mache ich etwas falsch? – Rachmaninoff

Verwandte Themen