gwt гиперссылка changeEvent - PullRequest
       9

gwt гиперссылка changeEvent

0 голосов
/ 01 декабря 2009

Как сделать, чтобы гиперссылка для текущей страницы запускала событие изменения истории?

Например, на http://localhost:8080/index.html#foo есть Гиперссылка с историей, взятой из foo. Как мне заставить приложение обрабатывать / запускать событие click / change?

Я в зависимости от характера поведения браузера?

Ответы [ 3 ]

1 голос
/ 01 декабря 2009

Чтобы приложение реагировало на щелчок гиперссылки 1002 *, вы можете добавить ClickHandler к гиперссылке. ClickHandler должен выполнить работу по обновлению интерфейса вашего приложения и т. Д. Токен истории будет обновляться автоматически на основе маркера истории, установленного в конструкторе гиперссылки, и метод History.newItem () вызывать не нужно.

Для обработки произвольных URL-адресов с возможными токенами, вставляемыми в поле URL браузера или добавленными в закладки пользователями, вам необходимо реализовать ValueChangeHandler. Посмотрите документацию HyperLink для примера.

0 голосов
/ 01 декабря 2009
Hyperlink myLink = new Hyperlink("foo");
myLink.addClickHandler(new ClickHandler() {
  @Override
  public void onClick(ClickEvent event) {
    String currentToken = History.getToken();
    String newToken = ((Hyperlink) event.getSource()).getTargetHistoryToken();
    if (currentToken == newToken) {
      History.fireCurrentHistoryState();
    }
  }
});
0 голосов
/ 01 декабря 2009

Нечто подобное запускает этот URL и добавляет его в историю

History.newItem("foo", true);

это просто добавляет его в историю как ответ на действия пользователя:

History.newItem("foo", false);

То есть установите HistoryListener (onHistoryChanged) и реагируйте только на него.

Если пользователь щелкает ссылку / напрямую переходит в избранное, отвечайте изнутри onHistoryChanged.

Когда пользователь что-то делает и вам нужно изменить URL-адрес, запустите History.newItem (..., true) и снова ответьте на него в onHistoryChanged.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...