我面临一个奇怪的情况:客户向我们提供了一些我们正在附加GWT的HTML。 我们不允许使用UI绑定,因此我们必须按原样加载页面,按ID检索元素并更改我们需要的内容。
这些页面包含一些第三方javascripts,但通常在第一次加载页面时,我会对未找到的方法有一些例外。如果我重新加载页面错误消失,页面工作正常。 我怀疑当页面加载这些JS时还没有,这就是我得到错误的原因。 在加载xxx.nocache.js之前有没有办法确保外部库已准备就绪?
另一个奇怪的问题:当我向页面添加GWT时,所有的监听器(例如按钮的onClick)都消失了,我必须重新连接它们。
当我打开原始页面(没有GWT)时,一切正常。
有什么建议吗?
答案 0 :(得分:0)
虽然html文档中脚本的加载过程是按顺序完成的,但并不能保证所有加载的脚本都按照这个顺序初始化事物,因为它们中的许多都可以像加载适当的排列时的GWT引导程序一样异步执行。< / p>
说,你应该在GWT中编写一些代码,等待所有需要的东西都被加载。使用计时器或调度程序:
Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
native boolean check() /*-{
// return true when all 3party js properties are available
return !! $wnd.some_library_property
}-*/;
public boolean execute() {
if (check()) {
// Call your real entrypoint code here
return false;
} else {
return true;
}
}
}, 100);
与您的第二个问题相关,当您使用gwt小部件包装一些元素时,有时您会丢失先前的附加事件,具体取决于小部件。你能发布一些关于如何包装这些元素的代码吗?