Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GWT open page in a new tab

Tags:

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.

I marked igorbel 's answer as the only correct cos I haven't found any proper way to specify the same behaviour in all situations.


like image 389
Zalivaka Avatar asked Oct 11 '10 15:10

Zalivaka


2 Answers

I used this code and it works for me in google chrome and mozilla firefox 3.6.8 browsers If you want to open a page in new window you should write code as

Window.open("www.google.com","_blank","enabled");

If you want to open a page in new tab you should write code as

Window.open("www.google.com","_blank","");
like image 96
Rajesh Avatar answered Sep 29 '22 21:09

Rajesh


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?

like image 35
igorbel Avatar answered Sep 29 '22 22:09

igorbel