Я разрабатываю приложение GWT, и я использую
com.google.gwt.user.client.Window.open(pageUrl, "_blank", "");
чтобы открыть новую страницу. И он открывается на новой вкладке при вызове, например, непосредственно после нажатия кнопки. Но я решил сделать некоторые проверки на сервере, прежде чем открывать новую страницу, и поместил вызов упомянутому выше методу в
public void onSuccess(Object response) {
}
И он начинает открывать страницы в новом окне вместо новой вкладки (это верно только для Chrome, другие браузеры все еще открывают ее на новой вкладке).
Может кто-нибудь мне помочь?
Я построил небольшой пример, чтобы проиллюстрировать проблему:
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Window.open("http://www.google.com/", "_blank", "");
MySampleApplicationServiceAsync serviceAsync = GWT.create(MySampleApplicationService.class);
serviceAsync.getMessage("Hello, Server!", new AsyncCallback() {
public void onFailure(Throwable caught) {
Window.alert("ERROR");
}
public void onSuccess(Object result) {
Window.open("http://www.bing.com/", "_blank", "");
}
}
);
}
});
- Firefox (3.6.8) открывает обе страницы в новых вкладках.
- Chrome (6.0) открывает "google.com" на новой вкладке и "bing.com" в новом окне
- Opera (10.10) открывается на новых вкладках.
- IE (8.0) открывается как в новой Windows.
Я отметил, что igorbel отвечает как единственно правильный, потому что я не нашел подходящего способа указать одно и то же поведение во всех ситуациях.