Не удается предотвратить обновление/перезагрузку страницы браузера в angular application

у меня есть свой сайт с angularjs SPA. Когда пользователь нажимает кнопку обновления или нажимает F5 / Ctrl + F5, чтобы предотвратить или прервать перезагрузку страницы. К сожалению, решение onbeforeunload и onunload событий не работают. На самом деле, они называются event.preventDefault() строка достигнута, есть какие-либо сообщения в консоли, но браузер продолжает загружать страницу.

мой текущий модуль .run() код:

let window = angular.element($window);
window.on("beforeunload", (event) => {
    event.preventDefault();
}).on("unload", (event) => {
    event.preventDefault();
});

// This is just for sure that I have my handlers registered 
$window.onbeforeunload = (event) => {
    event.preventDefault();
}

$window.onunload = (event) => {
    event.preventDefault();
}

как я могу справиться с этим в угловатый?

обновление

мне нужно это для перезагрузки фактического состояния вместо страницы. Поэтому, когда пользователь нажимает обновить, я хочу просто перезагрузить текущее состояние с $stateProvider и не перезагружать всю страницу

1 ответов


проверить, что Mozilla должна сказать о событиях разгрузки. Похоже, что невозможно предотвратить обновление, как вы хотите. Единственное, что вы можете сделать, это спросить пользователя, действительно ли он хочет покинуть страницу.

Я думаю, вы можете перезагрузить текущее состояние в случае, если пользователь отвечает, что он не хочет покидать текущую страницу.

window.onbeforeunload = function(event) {
    // do some stuff here, like reloading your current state
    //this would work only if the user chooses not to leave the page
    return 'why would you do that???';
}

Я создал скрипка для вас.