2012-01-23 61 views
3

當以託管模式運行GWT應用程序時,通常需要在查詢字符串參數中添加代碼服務器的位置,例如,而不是index.html,可能需要打開index.html?gwt.codesvr=127.0.0.1:9997。問題是gwt.codesvr通常不包含在超鏈接中,因此必須手動添加。將它添加到應用程序中的所有鏈接似乎不是一個好主意,因爲它會干擾最終的GWT編譯版本。另一個選項是index.html通過JavaScript自行反思,並附加默認gwt.codesvrwindow.location,但這應該只在應用程序確定它沒有被編譯後,即在GWT module may need to be (re)compiled警報之後完成。 我相信理想的解決方案應該是讓GWT在找到沒有排列組合的選擇之後定製它所做的動作。默認操作是顯示剛剛提到的警報警告,但不幸的是這不是可定製的。如何自動將gwt.codesvr附加到頁面URL

所以我的問題是:什麼是最好的方式來自動打開當前頁面的默認gwt.codesvr,當沒有編譯的排列。

回答

2

因爲我現在一直在處理'Places',所以我現在更新了bookmarklet來處理'#'。

javascript:(function(){h="localhost";p="9997";l="gwt.codesvr="+h+":"+p;s=false;if(document.location.href.indexOf("gwt.codesvr")<0){q=document.location.href.indexOf("?");if(q<0){q=document.location.href.indexOf("#");if(q>0){q=q-1}s=true}if(q<0&&!s){document.location.href=document.location.href+"?"+l}else%20if(q>=0&&!s){b=document.location.href.substr(0,q+1);e=document.location.href.substr(q+1);document.location.href=b+l+"&"+e}else{b=document.location.href.substr(0,q+1);if(q<0){e=""}else{e=document.location.href.substr(q+1)}document.location.href=b+"?"+l+e}}})(); 

更新2/7/2017-曾有腳本一個錯字。更正它。

+0

您的Javascript中有錯誤。你可以仔細檢查你是否複製了嗎? – 11101101b

+0

不錯,它現在就像一個魅力!最好的小書籤! – 11101101b

0

由於您只會使用該網址進行開發(也可能需要幾次遠程調試),因此只需書籤http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997(或您使用的任何端口)即可。

+0

我不認爲你的解決方案與手動添加gwt.codesvr有很大的不同。當然,任何鏈接都可以加入書籤。此外,我可以想到這種情況下,這是不是很有用,例如,當index.html作爲iframe加載... ... – Saintali

+0

你只需鍵入一次該網址,啓動應用程序,沒有必要修改任何鏈接您的應用程序支持codesrv – milan

+1

最常見的情況:您的頁面頂部有一個註銷鏈接。它向某些註銷操作URL發出HTTP請求,然後重定向到index.html。由於index.html是安全的,因此您被重定向到登錄頁面,登錄後您可以看到index.html。這是你第二次來到index.html,但這次用gwt.codesvr參數剝離了 – Saintali

5

我做了我點擊調試當前頁面中的書籤:

javascript:window.location+=(window.location.href.indexOf('?')==-1?"?":"&")+"gwt.codesvr=localhost:9997" 

但這並不佔結尾,你可能不反正需要的哈希值。該小書籤是關於我使用我的書籤欄的唯一...

可能值得指出的是,即使在生產服務器上也可以使用,只要您的本地客戶端代碼大致相同運行。

+0

的確聽起來不錯。 – Saintali

相關問題