我正在尝试打开电子邮件客户端,就像使用<a href="mailto:john.doe@mail.com">mail me</a>
标记一样。
但我想使用我的自定义小部件,它不是超链接,锚点等。我在我的小部件中添加了一个DOM处理程序来监听点击:
public class VContactWidget extends VHorizontalLayout implements ClickHandler {
private HandlerRegistration clickHandler;
public VContactWidget() {
// added some content here
clickHandler = addDomHandler(this, ClickEvent.getType());
}
@Override
public void onClick(ClickEvent event) {
Window.open("mailto:john.doe@mail.com", "_blank", "");
}
}
除了一个细节之外,一切正常:单击小部件后,将打开新的空浏览器选项卡,并将网址设置为mailto:john.doe@mail.com
。我不希望新标签打开。我可以以某种方式避免它吗?
注意我设置_blank
参数,如许多示例中所使用的那样。我也尝试使用空字符串或其他一些值。我查看了文档,但没有找到任何有用的东西。
https://developer.mozilla.org/en-US/docs/Web/API/window.open
一种解决方案可能是使用Anchor,但我的组件更复杂,而不仅仅是单<a>
个链接。
需要注意的另一个细节可能是应用程序服务器 - 我现在正在使用Tomcat 7.
答案 0 :(得分:1)
尝试以编程方式触发隐藏锚点上的本机事件对我不起作用。 (这并不意味着无法完成。)
这就是我如何解决我的问题:我使用了以下调用代替Window.open()
:
public void onClick(ClickEvent event) {
Window.Location.assign("mailto:john.doe@mail.com");
}
答案 1 :(得分:0)
这不是你可以控制的。此链接是在新标签页或新窗口中打开取决于浏览器设置和用户首选项。
如果您使用Anchor或Window.open,我认为它不会有所作为。在任何一种情况下,行为在不同的浏览器中可能是不同的。另请注意,对于某些用户,单击此链接将打开Outlook或Mail,而对于其他用户,它将在浏览器窗口中打开Gmail。
更新:
如果您想要<a>
元素的确切行为,请创建一个隐藏的锚元素,并在用户点击您的复合小部件时点击它。