Я еще не реализовал это поведение, но вот мой план, и, возможно, он будет работать для вас.
1) Каждый раз, когда вы получаете событие onHistoryChanged и решаете разрешить его, сохраняйте текущееhistoryToken где-то в переменной экземпляра.
2) Отслеживайте активность на странице, которая должна блокировать навигацию.Используйте структуру данных, которая может отслеживать несколько операций, таких как несколько загрузок файлов, несколько изменений и т. Д.
3) Когда вы получаете новое событие onHistoryChanged, если ваша структура данных из # 2 показывает, что это небезопаснодля навигации, не меняйте страницу и восстанавливайте историю, которую вы сохранили в # 1.Я предполагаю, что вы можете сделать это либо:
а) Вызов History.newItem (oldHistoryToken, false) или
b) Вызов History.newItem (oldHistoryToken, true) и сохранениефлаг для принудительного игнорирования следующего onHistoryChanged.
Опять же, я на самом деле не реализовал это, поэтому дайте мне знать, как это работает.
Если у вас есть ссылки, которые позволяют пользователю выйтиприложение, и вы хотите предотвратить это, вам также нужно добавить onbeforeunload.