我有一个打开第二个浏览器窗口的 GWT 应用程序。我希望我的第二个窗口能够在第一个窗口的入口点内调用方法。
下面的代码示例在生产(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 进行跨窗口通信?