views:

129

answers:

2

Hello, everybody!

I am developing GWT application and I use

com.google.gwt.user.client.Window.open(pageUrl, "_blank", "");

to open new page. And it opens in a new tab when called, for example, directly after button click. But I decided to do some validations on server before opening new page and placed the call to the mentioned above method to the

public void onSuccess(Object response) {
}

And it starts to open pages in new window instead of new tab (this is true only for Chrome, other browsers still open it in a new tab).

Can anybody help me?


I built a small example to illustrate the issue:

    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) opens both pages in new tabs.
  • Chrome(6.0) opens "google.com" in new tab and "bing.com" in new window
  • Opera(10.10) opens in new tabs.
  • IE(8.0) opens both in new Windows.
+2  A: 

I am not sure you are going to be able to control this the way you want. The problem is that browsers can decide when to open windows and when to open tabs. For example, firefox has the option: "Open new windows in new tabs instead". And don't forget the browsers that don't support tabs (yes, those do still exist).

Since this is such a problematic aspect of the user experience, my recommendation would be to reconsider your design. Is it really that important for you application to differentiate between opening a new tab and opening a new window?

igorbel
A: 

This code works for me:

public static native String getURL(String url)/*-{
return $wnd.open(url,
'target=_blank')
}-*/;
applecommander
Where can I find this method?
Zalivaka