GWT:外部javascripts加载延迟?

时间:2013-11-12 10:46:18

标签: javascript gwt handler

我面临一个奇怪的情况:客户向我们提供了一些我们正在附加GWT的HTML。 我们不允许使用UI绑定,因此我们必须按原样加载页面,按ID检索元素并更改我们需要的内容。

这些页面包含一些第三方javascripts,但通常在第一次加载页面时,我会对未找到的方法有一些例外。如果我重新加载页面错误消失,页面工作正常。 我怀疑当页面加载这些JS时还没有,这就是我得到错误的原因。 在加载xxx.nocache.js之前有没有办法确保外部库已准备就绪?

另一个奇怪的问题:当我向页面添加GWT时,所有的监听器(例如按钮的onClick)都消失了,我必须重新连接它们。

当我打开原始页面(没有GWT)时,一切正常。

有什么建议吗?

1 个答案:

答案 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小部件包装一些元素时,有时您会丢失先前的附加事件,具体取决于小部件。你能发布一些关于如何包装这些元素的代码吗?