HTML ページに埋め込まれた iframe があります。iframe 内のページは GWT で作成されました。
GWT プログラムには、外部から呼び出せるように公開した静的メソッドである静的変数があります。GWT プログラムには、静的変数を 10 秒ごとにチェックするタイマーがあります。
外側の HTML ページにはボタンがあり、ボタンが押されると、JavaScript コードが gwt プログラムの静的メソッドを呼び出します (HTML の iframe にあります)。
GWT 静的メソッドが呼び出されていることがわかります (内部に js アラート呼び出しがあります)。しかし、10 秒ごとに実行され、静的変数 (静的メソッドで変更された) をチェックする関数は、その値が変更されていないことを報告します。
HTML スニペット
<script type="text/javascript" src="/war/mygwtproject/mygwtproject.nocache.js">
<iframe id="feeds_frame" src="../root/war/mygwtproject.html" width="190" height="650" frameborder="1">
</iframe>
function toggleDrawingFeeds()
{
myGwtStaticMethod();
}
GWT コード
static boolean wasInitiated = false;
public static void myFunc()
{
MyGwt.wasInitiated = true;
alert(MyGwt.wasInitiated);
}
public void setTimer()
{
Timer t = new Timer()
{
public void run()
{
alert(MyGwt.wasInitiated);
if (MyGwt.wasInitiated)
{
//do something
}
else
{
//do something else
}
}
};
// Schedule the timer to run once in 5 seconds.
t.scheduleRepeating(10000);
}
public static native void exportStaticMethod() /*-{
$wnd.myGwtStaticMethod = $entry(@myPackage.MyEntryPoint::myFunc());
}-*/;
ありがとう、ヨアフ