2016-05-13 4 views
0

私が検索で見つけたことは、私がやるべきことを知っているJSでそれを行う方法です。私が探しているのは、これを行うGWTの仕組みです。GWTページをロードしてからwindow.alertを表示

私がおこうとしているのは、ロードした後に(ハードではない)ページに警告window.alert(app.getStatus())を置くことです。問題は、現在のコードではページのロードが完了する前にアラートがポップアップするため、ユーザーはOKボタンがクリックされるまで何もしない部分的に読み込まれたホワイトページが表示されることです。

これは(私はそれが正しい使用ではないと思いますが)が、これらだけ火一度、アプリケーションが開かれたとき、その後、意志、私はまた、以下を試みてきた私は、現在

public class DisplayApplicationViewImpl extends Composite 
    implements DisplayApplicationView { 

    public DisplayApplicationViewImpl() { 
     /*... 
     Lot of logic that is not helpful 
     ...*/ 

     initWidget(uiBinder.createAndBindUi(this)); 
     Window.alert("Test"); 
    } 
} 

を持っているものですページがリフレッシュされ、まだ「問題」の負荷がない限り、他のアプリケーションでは起動しません。それはロードGIFを表示することができますが、それは、その機能だけで、このコードには変化が文字通り存在しないで、なぜ私はわからないので

Scheduler.get().scheduleFinally(new RepeatingCommand(){ 
    @Override 
    public boolean execute() { 
     Window.alert("Test"); 
     return false; 
    } 
}); 

は、この1つは近い軽度です。

私は 'Window.onload()'を調べましたが、私はここでオプションではないようです。

答えて

2

initWidgetの後にWindow.alert()メソッドを配置します。つまり、このメッセージが表示されるまでにすべてのUIが構築されます。ブラウザのUIのレンダリングが終了したことを確認したい場合は、Window.alert()をscheduleDeferredI explain it here)にラップすることができます。

また、データや画像を読み込むことによって遅延が発生することがあります。データをロードする場合は、データ読み込みメソッドのコールバックにWindow.alert()を置くことができます。イメージの場合、HasLoadHandlersインターフェースを実装するGWT Imageウィジェットを使用できますが、ほとんどの場合、scheduleDeferredを使用すると十分です。

EDIT:メッセージは一度だけ現れるよう

各ビューのみ、一度構築されます。これは正しい動作です。メッセージを複数回表示する場合は、プレゼンター/アクティビティでこのメッセージが表示されるか、または表示されるようにビューに指示する必要があります。

+0

これは私が試して概説した方法の1つであり、まだ完全にページを読み込まないようにしています。また、アプリ(リテラルウェブアプリ)がリフレッシュされない限り、警告が1回だけ発生するという非常に奇妙な動作があります。私はデータの読み込みを調べますが、なぜリフレッシュ動作ですか? – nerdlyist

+0

1. GWTコードが実行される前にページが完全に読み込まれています。 GWTコードが読み込むページのコンテンツについて話しています。コンテンツを非同期でロードする場合、それらのメソッドのコールバックで何かを行うことができます。 –

+1

2.あなたのビューは一度しか構築されていないので、メッセージは一度しか表示されません。これは正しい動作です。メッセージを複数回表示する場合は、プレゼンター/アクティビティでこのメッセージが表示されるか、または表示されるようにビューに指示する必要があります。 –

関連する問題