2011-10-20 25 views
2

我有一個GWT Places/Activities網絡應用程序。我使用Anchorclick事件將用戶移動到新的「地點」,因此用戶無法在新窗口或選項卡中打開任何「鏈接」。問題是 - 我如何使所有這些鏈接真實?GWT Places/Activities - 應該用什麼導航?

回答

3

可能不是使用Anchor並且正在監聽ClickEvent使用Hyperlink而將targetHistoryToken設置爲地名。

例如

<g:Hyperlink text="Home" targetHistoryToken="home" />

6

邊使用Hyperlink(或InlineHyperlink)的作品,我寧願上Anchor使用ClickHandler,因爲如果任何活動返回mayStop非空值的URL不會改變尚(而使用Hyperlink,即使用戶選擇取消導航,它也會有)。

要在Anchor上設置目標(href),只需使用PlaceHistoryMapper即可。而正確處理CTRL +單擊,中鍵單擊,然後右鍵單擊,重用HyperlinkImpl

Anchor anchor = new Anchor("text", "#" + placeHistoryMapper.getToken(targetPlace)); 
anchor.addClickHandler(new ClickHandler() { 
    private static final HyperlinkImpl IMPL = GWT.create(HyperlinkImpl.class); 

    @Override 
    public void onClick(ClickEvent event) { 
     if (IMPL.handleAsClick(event)) { 
     placeController.goTo(targetPlace); 
     event.preventDefault(); 
     } 
    } 
}); 
+0

+1 - 很不錯。當使用活動和地點時,這幾乎總是您想要的行爲。如果將它構建到GWT中,這將是非常好的,所以我們不必訴諸於「祕密計劃和巧妙的技巧」,以獲得像預期的那樣工作的基礎。 – pauli

+0

@Thomas Broyer:我創建了一個操場應用程序來檢查這個想法,並且這種行爲很奇怪。當我第一次加載頁面時,所有三個「左鍵單擊」,「右鍵菜單 - 在新標籤頁中打開」和「Ctrl點擊」都可以正常工作。但是,當我離開點擊,然後回去「Ctrl點擊」不再工作 - 它現在做同樣的非Ctrl Ctrl左鍵單擊。重新加載整個頁面可修復此問題。思考? (如果它很重要,我使用Chrome) – agibalov