2014-05-21 131 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

我更新了我的答案。 –

相關問題