GWT 在新标签页中打开页面

2022-09-02 09:47:56

我正在开发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的答案标记为唯一正确的原因,因为我没有找到任何适当的方法来在所有情况下指定相同的行为。



答案 1

我用了这个代码,它适用于我谷歌浏览器和mozilla firefox 3.6.8浏览器如果你想在新窗口中打开一个页面,你应该编写代码作为

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

如果你想在新选项卡中打开一个页面,你应该把代码写成

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

答案 2

我不确定你是否能够以你想要的方式控制它。问题是浏览器可以决定何时打开窗口以及何时打开选项卡。例如,firefox有一个选项:“改为在新标签页中打开新窗口”。不要忘记不支持选项卡的浏览器(是的,这些仍然存在)。

由于这是用户体验的一个有问题的方面,我的建议是重新考虑你的设计。对于应用程序来说,区分打开新选项卡和打开新窗口真的那么重要吗?