我有2个项目。第一个是GWT项目
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()();
});
}-*/;
}
第二个是使用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 :(得分:0)
可能是时间问题吗?似乎在IE中,initPage01函数不存在于页面加载中。不确定GWT如何加载脚本,但我记得它在iframe的脚本中加载。所以IE中的onload会更早启动,因为它不会检查是否加载了iframe。
毕竟为什么不从你的GWT应用程序打开弹出窗口。打开popup direct onload而不是onModuleLoad有什么好处?
答案 1 :(得分:0)
@eskimoblood可能是正确的 - 在脚本完全加载之前调用initPage01()
。尝试使用scheduleDeferred()
- 将其放入onModuleLoad()
:
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
// your commands here
Ecoverage.publish();
}
});