2010-07-29 96 views
4

我循環通過一些數據和生成參數化URL鏈接基於這樣一些條件:變化URL觸發事件在GWT

finishedHTML.append("<a href=\"http://" + domain + "&service=" + allEvents[eventCounter].EventService +"&day="+ offSet+(-1 * i) +"\"><img src=\"/info.jpg\" alt=\"Info\"/>"); 

我有我的應用程序開始檢查URL參數時的頁面被加載/刷新,並根據參數是否存在以及它們是什麼進行一些操作。

但是,我在參數的開頭添加了一個#,因此不需要刷新頁面,但現在它不會觸發檢查URL的函數。

我的問題是如何在用戶點擊鏈接時觸發GWT中的事件?我是否需要生成GWT控件,並鏈接點擊處理程序?是否有可能設置URL更改時觸發的事件???

UPDATE: 亞當回答最初的問題的一部分,但「#」後我不能讓查詢字符串。難道還有比下面的功能更好的辦法:

public static String getQueryString() 
{ 
    return Window.Location.getQueryString(); 
} 

換句話說,如果我進入example.com?service=1我獲得服務= 1作爲查詢字符串我。如果我輸入example.com#?service=1,則查詢字符串會得到空值。

回答

9

使用History.addValueChangeHandler(handler),並創建處理程序以捕獲URL更改。

無需點擊處理程序等,URL中「散列」部分的任何更改就足夠了。

編輯:

看到這個代碼示例 - 它將解析形式的URL http://mydomain/my/path#tok1&tok2&tok3

public void onValueChange(ValueChangeEvent<String> event) { 
    String hash = event.getValue(); 
    if (hash.length() == 0) { 
    return; 
    } 
    String[] historyTokens = hash.split("&",0); 
    // do stuff according to tokens 
} 
+0

感謝亞當,我實現了History.addHistoryListener,它正在響應URL中的更改。然而,現在我查找Querystring的函數無法看到'#'之後的任何內容。是否有另一種方法來獲取整個Querystring? – tpow 2010-08-02 20:12:00

+0

我編輯了我的答案,添加了一個有效的代碼示例。 – adamk 2010-08-02 21:48:30

4

(只是迴應你的更新) 你試過

History.getToken() 

獲取「#」後面的值?

相關問題