Всё что касается Angular, достойно тихой благодарности. Раньше даже не задумывался о том, что пользователь может перейти на другую страницу не дождавшись длинных процедур. Спасибо.
Традиционные решения — это jQuery?
Сам изучал angular попутно с js (любовь к нему появилась из-за angular), так вот с angular сложности не было, а вот возможности js крышу как раз таки сносят(после java). Но они замечательны!
Приложения AngularJS — это одностраничные приложения, которые отрисовывают вид в HTML дереве (div например). Соответственно, в одностраничных приложениях вызов этой функции производиться не будет.
Кто же тогда меняет URL? Если приложение само, то зачем городить огород, когда можно просто перед сменой URL проверить изменения и простым confirm диалогом спросить тоже самое.
Если все таки пользователь, то вызов event'а «beforeunload» происходит как всегда…
PS. Что такое Angular я в курсе.
Навигация в контексте Angular происходит не изменением URL, а её части, находящейся после хэш-тега. Я проверил, и в данном случае эта функция не вызывается. Возможно это сработает в режиме html5mode, но сомнительно, ведь в данном случае придётся перезагружать всё окно(скрипты, стили), и приложение уже не будет одностраничным?
Если происходит переход пользователем из-за изменения адресной строки — то да, ваш подход должен сработать, но, как я понимаю, без адаптации Вашего кода в Angular контекст — это антипаттерн.
В итоге — да, приложение само меняет часть URL после хэш-тега, а данная статья как раз и показывает, как это сделать средствами приложения.
Отмена изменения пути в AngularJS