0

我面临一个奇怪的情况:客户向我们提供了一些我们附加 GWT 的 HTML。我们不允许使用 UI Binding,所以我们必须按原样加载页面,通过它们的 id 检索元素并更改我们需要的内容。

这些页面包括一些第三方 javascript,但通常在第一次加载页面时,我会遇到一些关于找不到方法的异常。如果我重新加载页面,错误就消失了,页面工作正常。我怀疑当页面加载时这些 JS 还不可用,这就是我收到错误的原因。在加载 xxx.nocache.js 之前,有什么方法可以确保外部库准备就绪?

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

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

有什么建议么?

4

1 回答 1

0

尽管 html 文档中脚本的加载过程是按顺序完成的,但它并不能保证所有加载的脚本都按此顺序初始化事物,因为它们中的许多可以像 GWT 引导程序在加载适当的排列时那样异步执行操作。

话虽如此,您应该在 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 小部件包装一些元素时,有时您会丢失先前附加的事件,具体取决于小部件。您能否发布一些有关如何包装这些元素的代码。

于 2013-11-12T15:15:03.460 回答