Как мне определить, иду ли я «вперед» или «назад» через мою историю в GWT? - PullRequest
4 голосов
/ 22 апреля 2010

Я смотрю на История и История JavaDocs в GWT, и я замечаю, что нет никакого способа узнать, была ли нажата кнопка вперед или назад (прагматично или пользователем ). «Нажатие кнопки» обрабатывается вашим зарегистрированным addValueChangeHandler, но единственное, что передается обработчику, это строка в вашем стеке истории. Нет никаких указаний относительно того, движется ли «История» «назад» (с помощью кнопки со стрелкой назад) или «вперед» (с помощью кнопки со стрелкой вправо). Есть ли способ определить это?

Ответы [ 2 ]

4 голосов
/ 23 апреля 2010

Извините, вы не можете.И даже если бы вы могли, есть браузеры, такие как Firefox, которые позволяют пользователю «отскочить» назад на несколько страниц.Поэтому, если вы попытаетесь полагаться на относительные «координаты» вместо абсолютных, навигация может нарушить работу вашего приложения.

Вы всегда можете добавить какой-то счетчик на свой жетон истории.Это было бы не сложно, если бы у вас был только один слушатель истории.

0 голосов
/ 25 июля 2013

То, что вы можете сделать, это иметь один UrlManager, подобный этому:

   public class UrlManager implements ValueChangeHandler<String> {

   public UrlManager() {
     History.addValueChangeHandler(this);       
    }

  public void onValueChange(ValueChangeEvent<String> event) {     
    String historyToken = event.getValue();

  }
   }

Сохранение каждого маркера истории в список.
Если это абсолютно новый токен истории, добавьте его в список. Если это предыдущий токен истории, то была нажата кнопка «Назад».

Я предлагаю использовать список для сохранения токенов и сохранения итератора, который может перемещаться вверх и вниз по списку. Так что изначально он указывает на конец списка. Если новый токен является предыдущим элементом в списке, то была нажата кнопка «Назад». Если вы находитесь в середине списка (несколько раз назад) и появляется новая запись (нажата новая ссылка), удалите оставшуюся часть списка (больше не могу идти вперед) и добавьте новую переместить итератор к этому элементу.

Вы поняли.

...