Po kliknięciu przycisku przeglądarki wyświetlany jest monit w formacie JavaScript Confirm
, oglądając wydarzenie $stateChangeStart
. Rozważ następujące:event.preventDefault() z Angularjs i Uirouter usuwa historię przeglądarek
Użytkownicy przechodzą ze strony 1, 2, a następnie strony 3. Na stronie 3 użytkownik klika przycisk Back
, a następnie wyświetla pole Potwierdź. Użytkownik klika przycisk Cancel
, event.preventDefault()
, a użytkownik pozostaje na tej samej stronie. Następnie, jeśli użytkownik ponownie kliknie Back
i wybierze po raz drugi OK
, użytkownik zostanie przeniesiony z powrotem na stronę 1. Co się stało ze stroną 2? Czy event.preventDefault()
usuwa ostatnią historię? Jak zapobiec przeglądaniu poprzedniej strony przez przeglądarkę?
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
var retVal = confirm("You have unsaved changes. If you leave the page, these changes will be lost.");
if (retVal == false) {
// user wants to cancel navigating back.
event.preventDefault();
}
});