2 番目のブラウザー ウィンドウを開く GWT アプリケーションがあります。2 番目のウィンドウが最初のウィンドウのエントリ ポイント内でメソッドを呼び出せるようにしたいと考えています。
以下のコード サンプルは運用 (Web) モードで動作しますが、ホスト モードで実行しようとすると、IE は XSS を検出し、検出された攻撃から保護するために単一の「#」でページを上書きします。これは、テストしているアプリケーションが仮想マシンにデプロイされているときに、GWT コード サーバーが localhost で実行されているためだと思います。
更新: IE XSS フィルタリングは散発的であるようです。時々、ページをロードできることがあります。しかし、しばらくすると、再びフィルタリングが開始されます。
public class MainWindow implements EntryPoint {
...
@Override
public void onModuleLoad() {
registerJSNIFunctions(this);
}
private native void registerJSNIFunctions(MainWindow mw) /*-{
$wnd.sayHi = function (name) {
mw.@MainWindow::sayHi(Ljava/lang/String;)(name);
}
}-*/;
public void sayHi(String name) {
alert("Hi " + name); // not valid, but you get the point
}
...
}
public class SecondWindow implements EntryPoint {
...
@Override
public void onModuleLoad() {
...
sayHi("kylos");
}
public static native void sayHi(String name) /*-{
$wnd.opener.window.$wnd.sayHi(name);
}-*/;
}
これをホストモードで動作させる方法についてのアイデアはありますか? または、GWT とのクロスウィンドウ通信を行うためのより良い方法はありますか?