Как показать предыдущий URL после того, как пользователь отменил диалог с сообщением от Activity # mayStop ()? - PullRequest
0 голосов
/ 11 ноября 2010

В нашем приложении нам нужно проверить, сохраняются ли данные, когда мы находимся в определенном месте, прежде чем отойти от него. Таким образом, пользователь должен иметь возможность отклонить запрос кнопки возврата браузера. Но к тому времени, когда событие изменения значения истории получено, URL уже был изменен. У класса History, похоже, нет способа восстановить URL-адрес. У кого-нибудь есть идеи?

Ответы [ 5 ]

1 голос
/ 12 ноября 2010

В GWT 2.1 вы получаете Действия и Места.И у активности есть метод maystop , который именно то, что вы хотите, если я вас правильно понимаю.

0 голосов
/ 02 августа 2012

В этом отчете о проблеме, t.broyer объясняет в своем комментарии , что такое поведение планировалось во время разработки структуры Places.Самая важная часть:

mayStop был ошибкой, или он должен был быть вызван только при выгрузке приложения, а не для внутренней навигации в приложении.наверное, лучше вообще его не использовать ...

0 голосов
/ 12 ноября 2010

Я еще не реализовал это поведение, но вот мой план, и, возможно, он будет работать для вас.

1) Каждый раз, когда вы получаете событие onHistoryChanged и решаете разрешить его, сохраняйте текущееhistoryToken где-то в переменной экземпляра.

2) Отслеживайте активность на странице, которая должна блокировать навигацию.Используйте структуру данных, которая может отслеживать несколько операций, таких как несколько загрузок файлов, несколько изменений и т. Д.

3) Когда вы получаете новое событие onHistoryChanged, если ваша структура данных из # 2 показывает, что это небезопаснодля навигации, не меняйте страницу и восстанавливайте историю, которую вы сохранили в # 1.Я предполагаю, что вы можете сделать это либо:

а) Вызов History.newItem (oldHistoryToken, false) или

b) Вызов History.newItem (oldHistoryToken, true) и сохранениефлаг для принудительного игнорирования следующего onHistoryChanged.

Опять же, я на самом деле не реализовал это, поэтому дайте мне знать, как это работает.

Если у вас есть ссылки, которые позволяют пользователю выйтиприложение, и вы хотите предотвратить это, вам также нужно добавить onbeforeunload.

0 голосов
/ 12 ноября 2010

Взгляните на класс PlaceManagerImpl из платформы gwt .Особенно метод onValueChange() и методы, относящиеся к полю onLeaveQuestion.

Надеюсь, это поможет.

0 голосов
/ 11 ноября 2010

Используйте window.onunload или window.onbeforeunload обратный вызов JavaScript для подтверждения / сохранения состояния. Пример перед загрузкой

...