2011-08-10 15 views
0

私は2つのプロジェクトを持っています。最初はGWTプロジェクトですJavaScriptからGWT関数を呼び出す(IEの問題)

public class Ecoverage implements EntryPoint { 
    public void onModuleLoad() { 
    Ecoverage.publish(); 
    } 
    public static void getPayloadPage01() { 
    Window.alert("alert from GWT module"); 
    } 
    public static native void publish() /*-{ 
    $wnd.initPage01 = $entry(function() { 
     @com.apps.client.Ecoverage::getPayloadPage01()(); 
    }); 
    }-*/; 
} 

2番目はjspを使用した通常の動的Webプロジェクトです。

Page1.jspを

<head> 
<script language="javascript"> 
window.onload = function() { 
    window.initPage01(); 
}; 
</script> 
<script type="text/javascript" language="javascript" src="../Ecoverage/ecoverage/ecoverage.nocache.js"></script> 
</head> 

ポップアップウィンドウはFFとChromeに細かい作業ではなく、IEでされます。 IEは

Message: Object doesn't support this property or method 
Line: 18 
Char: 3 
Code: 0 
URI: http://10.0.2.2:8080/ecoverage-light/page1.jsp 

と言っています。行18は:window.initPage01();です。

IEの回避策はありますか?

答えて

0

タイミングの問題がありますか? IEではinitPage01関数がページの読み込みに存在しないようです。 GWTがスクリプトをどのように読み込むのかはわかりませんが、iframe内のスクリプトで読み込まれることを覚えています。したがって、iframeがロードされているかどうかをチェックするのではなく、IEのonloadが早期に起動します。

なぜ、あなたのGWTアプリからポップアップを開くのですか? onModuleLoadの代わりにポップアップダイレクトオンロードを開く利点は何ですか?

+0

それだけでテストのためだ、私はJSPページがロードされた後にRPCサービスを呼び出すするつもりです。 – YNChumak

0

@eskimobloodはおそらく正しいでしょう - initPage01()は、スクリプトが完全に読み込まれる前に呼び出されます。 scheduleDeferred()を使用してみてください - あなたのonModuleLoad()でこれを置く:

Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { 
    @Override 
    public void execute() { 
     // your commands here 
      Ecoverage.publish(); 
    } 
}); 
関連する問題