1

私は現在、アプリケーションのiframe内にHTMLファイルを表示しているGWTプロジェクトに取り組んでいます。このHTMLファイルは、実際に表示されているときに書き込まれています。フレームをリロードして、HTMLファイルに加えられた変更が画面に反映されるようにしたいと考えています。私はこの2つの異なる方法を実行できます。どちらも開発モードで実行している場合は機能しますが、プロジェクトがデプロイされている場合はどちらも機能しないようです。

私が試した最初の方法は、フレームのURLをそれ自体に設定することでした。

frame.setUrl(frame.getUrl());

JSNIを使用して試した2番目の方法:

public native void refresh() /*-{
  if($doc.getElementById('__reportFrame') != null) {
    $doc.getElementById('__reportFrame').src =
       $doc.getElementById('__reportFrame').src;
  }
}-*/;

デプロイされると、フレームがウィンドウに表示され、ファイルへの書き込みが完了すると、これらの更新メソッドのいずれかが呼び出され、フレームが更新されて、完成したHTMLファイルが含まれます。デプロイされたとき、refreshの呼び出しはフレームのコンテンツをリロードしませんが、フレームのコンテキストメニュー(Firefoxの場合)を表示し、[このフレーム]に移動して[再ロード]をクリックすると、フレームが正常にリロードされます。完成したHTMLファイルが含まれています。私はこれをFirefoxの複数のバージョンでテストしましたが運がありませんでした。

誰か提案はありますか?動作がモードごとに異なるのはなぜですか?

ありがとう。

4

2 に答える 2

0

うわー、グーグルは彼の検索で本当に速いです^^

これを行うには、いくつかのJSNIを使用できます。次のようなメソッドを作成します

保護されたネイティブvoidreloadIFrame(Element iframeEl)/ -{iframeEl.contentWindow.location.reload(true); }- /;

 Then call it with your iFrame element

したがって、2回投稿した質問は、すでにここで回答されています http://groups.google.com/group/google-web-toolkit/browse_thread/thread/64aa7712890652d3

于 2012-06-14T15:59:36.730 に答える
0

1つのGWTアプリケーション(親)が別のGWTアプリケーション(子)をiframeにロードするという要件がありました。子アプリケーションは、特定のDB操作を実行した後にiframeを更新する必要がありました。同じことを達成するためにJSNIを使用しました。

private native void refreshChild(String url)/*-{
 $wnd.location.href=url; 
}-*/

子フレームを別のWebページにリダイレクトする必要がある場合は、それに応じてURLを変更できます。reload()メソッドを使用しようとしましたが、役に立ちませんでした。もちろん、上記のコードは子アプリケーションで記述する必要があります。

于 2015-03-04T05:21:31.740 に答える