java 在新标签页中打开链接

t1qtbnec  于 2023-03-28  发布在  Java
关注(0)|答案(5)|浏览(532)

下面是我用Vaadin写的代码,当用户点击按钮时,代码打开页面www.google.com
我的问题是,有没有什么方法可以让我指定页面是在一个新的标签打开?
谢谢。

button.addClickListener(new Button.ClickListener() {
    public void buttonClick(ClickEvent event) {
        getUI().getPage().setLocation("http://www.google.com");
    }
});
zzlelutf

zzlelutf1#

getUI().getPage().open("http://www.google.com", "_blank");

_blank窗口名在这里很重要。请注意,您可能也有浏览器,可能会在新窗口中打开资源。
open()方法还有另一个签名,即

open(String url, String windowName, boolean tryToOpenAsPopup)

可能符合要求的人。
参考:页面(Vaadin 7.2.1 API)。

vuktfyat

vuktfyat2#

请尝试以下代码:

BrowserWindowOpener opener = new BrowserWindowOpener(new ExternalResource(url));
opener.setFeatures("");
opener.extend(button);
cgyqldqp

cgyqldqp3#

不鼓励使用ButtonBrowserWindowOpenergetUI().getPage().open("http://www.google.com", "_blank");,因为这通常会被弹出窗口阻止程序阻止。
使用Link组件:

final Link link = new Link("Google", new ExternalResource("http://www.google.com"));
link.setTargetName("_blank");

查看更多Vaadin Link Documentation

sg2wtvxw

sg2wtvxw4#

这取决于你想达到什么目的。

溶液1

如果你想让你的按钮打开一个新的标签,BrowserWindowOpener可能是正确的解决方案。

Button viewBtn = new Button("Click me");
BrowserWindowOpener opener = new BrowserWindowOpener(new ExternalResource("http://www.example.com"));
opener.setWindowName("_blank");
opener.extend(viewBtn);

溶液2

只有当按住键盘上的Ctrl(Alt,Shift,...)键时,您的按钮才应该在新标签页中打开。如果没有,请在现有标签页中打开。在这种情况下,您可以尝试使用Page#open()方法打开新标签页。请注意,浏览器可能会尝试阻止您的操作,并警告用户他们已经阻止了弹出窗口(即使它不是弹出窗口,而是新标签页)。

Button viewBtn = new Button("Click me", VaadinIcons.EYE);
viewBtn.addClickListener(ev -> {
  if (ev.isCtrlKey()) {
      Page.getCurrent().open("http://www.example.com", "_blank", false);
  } else {
      Page.getCurrent().setLocation("http://www.example.com");
  }
});

方案三

如果你想要在现有标签页中单击鼠标左键打开,在新标签页中单击鼠标中键时的常见行为,请使用链接而不是按钮。在这种情况下,浏览器可能会允许你打开新标签页。

Link link = new Link(null, new ExternalResource(UriUtil.createAdUri(ad)));
link.setIcon(VaadinIcons.EYE);
mctunoxg

mctunoxg5#

在Vaadin 24上,这些答案都不适合我,很多方法都被弃用了。这是目前有效的:

UI.getCurrent().getPage().open("https://stackoverflow.com","_blank");

相关问题