2014-05-21 88 views
1

我试图打开电子邮件客户端,就像使用<a href="mailto:[email protected]">mail me</a>标记一样。GWT:未打开浏览器选项卡打开新邮件窗口

但我想用我的自定义小部件,这不是超链接,锚点等。我添加了一个DOM处理程序,以我的小工具来听点击:当单击该窗口小部件,新的空的浏览器标签将URL设置为mailto:[email protected]开:除了一个细节

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:[email protected]", "_blank", ""); 
} 

} 

一切工作正常。我不希望打开新标签。我能以某种方式避免它吗?

注意我设置了_blank参数,如许多示例中所使用的。我也尝试使用空字符串或其他值。我查看了文档,但没有发现任何有用的东西。 https://developer.mozilla.org/en-US/docs/Web/API/window.open

一个解决办法可能是使用锚,但我的成分比较复杂,不只是单一的<a>链接。

需要注意的另一个细节可能是应用程序服务器 - 我现在正在使用Tomcat 7。

回答

1

试图开枪隐藏锚编程并没有为我工作的本地事件。 (这并不意味着它不能这样做。)

这是,我实际上是如何解决我的问题:与其Window.open(),我用下面的调用:

public void onClick(ClickEvent event) { 
    Window.Location.assign("mailto:[email protected]"); 
} 
0

这不是你可以控制的东西。此链接是在新标签页还是在新窗口中打开取决于浏览器设置和用户首选项。

我不认为如果你使用Anchor或Window.open会有所作为。无论哪种情况,在不同浏览器中的行为可能会有所不同。另请注意,对于某些用户,单击此链接将打开Outlook或Mail,而对于其他用户,它将在浏览器窗口中打开Gmail。

UPDATE:

如果你想要一个<a>元素的确切行为,创建一个隐藏的锚元素,当用户点击您的复合控件就可以触发一个点击。

Firing click event from code in gwt

+0

感谢您的回答,安德烈。 如果我在静态html页面中直接使用代码mail me,则不会打开新的选项卡。 (至少在Chrome中)这是我想要的。我期望,使用生成完全相同的代码的锚将以相同的方式运行。 (不,我没有尝试过,因为我无法使用Anchor。)它看起来不像是依赖于浏览器设置。 – Radium

+0

它也取决于默认的电子邮件客户端。对于许多用户,点击此链接将打开Outlook或邮件,而其他用户则会打开Gmail等。 –

+0

我更新了我的答案。 –

相关问题