Использование onBeforeUnload оборачивает историю браузера в Angular - PullRequest
0 голосов
/ 19 сентября 2018

Когда пользователь закончит ввод данных на странице, я хочу, чтобы он вернулся на предыдущую страницу (например, Главная страница -> Страница ввода).Если я перенаправлю их, когда они нажмут кнопку «Отправить», я получу круговую историю (Главная страница -> Страница ввода -> Главная страница).Следовательно, когда пользователь нажимает «Отправить», я вызываю window.history.back().

. Чтобы предотвратить потерю данных, я прослушиваю событие beforeUnload.Если пользователь не отправил форму, я хочу убедиться, что он знает, что он потеряет свои изменения.

Проблема, с которой я столкнулся, заключается в том, что если пользователь пытается вернуться без отправки своих данных, нажмите кнопку "Отмена".чтобы остаться на странице, а затем нажмите кнопку Отправить.1-й раз, когда они получают ответный удар, отменяется, а затем после отправки я выполняю history.back (), но в итоге происходит возврат 2 записей в истории вместо 1. Это почти как если бы я отменял событие возврата, как предыдущий URL(Главная страница) удаляется из стека истории все вместе.Следовательно, нажатие кнопки «Отправить» проходит мимо этой страницы и обратно на страницу «Новая вкладка».

Я знаю, что управление стеками безумно сложно, но я не могу понять, как перейти к предыдущему URL, если пользователь отменяет onBeforeUnload дляоставайтесь на странице и отправляйте хиты.Похоже, если пользователь отменяет его, когда я вызываю history.back (), он должен вернуться на главную страницу.

1 Ответ

0 голосов
/ 20 сентября 2018

Я обнаружил, что моя проблема связана с Angular, о которой я не упомянул в этом вопросе.Похоже, что Угловая навигация облажается, когда защита CanDeactivate отменяет навигацию .Есть предложенная работа, которая, кажется, работает для меня.

...