У меня есть веб-приложение GWT Places/Activities. Я использую событие click
Anchor
для перемещения пользователя в новое «место», поэтому пользователь никак не может открыть какую-либо «ссылку» в новом окне или вкладке. Вопрос - как мне сделать все эти ссылки реальными?
GWT Places/Activities — что следует использовать для навигации?
Ответы (2)
Возможно, вместо того, чтобы использовать Anchor
и слушать ClickEvent
, используйте Hyperlink
с targetHistoryToken
, установленным на название места.
e.g.
<g:Hyperlink text="Home" targetHistoryToken="home" />
person
pillingworth
schedule
20.10.2011
Хотя использование Hyperlink
(или InlineHyperlink
) работает, я бы предпочел использовать ClickHandler
для Anchor
, потому что, если какое-либо действие возвращает ненулевое значение в mayStop
, URL-адрес еще не изменился (тогда как с Hyperlink
он имел бы , даже если пользователь решит отменить навигацию).
Чтобы установить цель (href
) на Anchor
, просто используйте PlaceHistoryMapper
. И чтобы правильно обрабатывать ctrl+щелчок, щелчок средней кнопкой мыши и щелчок правой кнопкой мыши, повторно используйте HyperlinkImpl
:
Anchor anchor = new Anchor("text", "#" + placeHistoryMapper.getToken(targetPlace));
anchor.addClickHandler(new ClickHandler() {
private static final HyperlinkImpl IMPL = GWT.create(HyperlinkImpl.class);
@Override
public void onClick(ClickEvent event) {
if (IMPL.handleAsClick(event)) {
placeController.goTo(targetPlace);
event.preventDefault();
}
}
});
person
Thomas Broyer
schedule
20.10.2011
+1 - красиво. При использовании действий и мест это почти всегда то поведение, которое вам нужно. Было бы неплохо, если бы это было встроено в GWT, чтобы нам не приходилось прибегать к секретным планам и хитрым уловкам, чтобы получить что-то столь фундаментальное, как это, работающее, как ожидалось.
- person pillingworth; 20.10.2011
@Thomas Broyer: я создал приложение для игровой площадки, чтобы проверить эту идею, и поведение довольно странное. Когда я загружаю страницу в первый раз, все три щелчка левой кнопкой мыши, правый-меню-открыть в новой вкладке и Ctrl-щелчок работают нормально. Но когда я щелкаю левой кнопкой мыши, а затем возвращаюсь, щелчок Ctrl больше не работает - теперь он делает то же самое, что и щелчок левой кнопкой мыши без Ctrl. Перезагрузка всей страницы исправляет это. Мысли? (Я использую Chrome, если это имеет значение)
- person Andrey Agibalov; 21.10.2011