2012-01-23 28 views
3

ホストモードでGWTアプリケーションを実行する場合、通常、クエリ文字列パラメータにコードサーバーの場所を追加する必要があります。たとえば、index.htmlの代わりにindex.html?gwt.codesvr=127.0.0.1:9997を開く必要があります。問題は、通常、ハイパーリンクにgwt.codesvrが含まれないため、手動で追加する必要があることです。アプリケーションのすべてのリンクに追加することは、最終的なGWTコンパイルされたバージョンを妨げるので、良い考えではありません。もう1つの選択肢は、index.htmlをJavaScriptでイントロスペクションし、デフォルトのgwt.codesvrwindow.locationに追加することです。これは、アプリケーションがコンパイルされていないことを確認した後、つまりGWT module may need to be (re)compiledアラートの後に行う必要があります。 理想的な解決策は、GWTが選択する順列が見つからないと、それが行う動作のカスタマイズを許可することだと思います。デフォルトのアクションは、今述べたアラート警告を表示することですが、残念ながらこれはカスタマイズできません。ページURLに自動的にgwt.codesvrを追加する方法

私の質問はこれです。コンパイルされた順列がない場合、現在のページをデフォルトのgwt.codesvrで自動的に開く最良の方法は何ですか。

答えて

2

私はいつも '場所'を扱っているので、ブックマークレットも '#'も扱うように更新しました。

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

このURLは開発用(リモートデバッグ用の場合もあります)のためだけに使用しますので、ブックマークhttp://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997(または使用するポート)をブックマークしてください。

+0

gwt.codesvrを手作業で追加するのとあなたのソリューションが大きく異なるとは思わない。もちろん、いつでも任意のリンクをブックマークすることができます。さらに、index.htmlがiframeとして読み込まれたときなど、これが役に立たない状況を考えることができます。 – Saintali

+0

このURLを一度入力するだけで、アプリを起動するだけで、リンクを変更する必要はありませんあなたのアプリケーションがcodesrvをサポートするために – milan

+1

最も頻繁なケース:あなたのページの上部にログアウトリンクがあります。それは、いくつかのログアウトアクションURLへのHTTPリクエストを作成し、index.htmlにリダイレクトされます。 index.htmlは安全であるため、ログインページにリダイレクトされ、ログインするとindex.htmlが表示されます。これはindex.htmlでここにいた2回目ですが、今度はgwt.codesvrパラメータを使って – Saintali

5

私は、現在のページをデバッグするためにクリックブックマークレット作っ:

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

をそれはあなたがとにかく必要としないことがある、最後にハッシュを考慮していません。そのブックマークレットは、ブックマークバーを使用する唯一のものです。

プロダクションサーバーでも使用できますが、そのサーバーがローカルであったのとほぼ同じクライアントコードを使用している限りランニング。

+0

本当に良い音。 – Saintali