gwt - 找出 GWT 模块何时加载

标签 gwt jsni

我以以下方式将 GWT 方法导出到 native javascript:

public class FaceBookGalleryEntryPoint implements EntryPoint {

    @Override
    public void onModuleLoad() {

        FacebookGallery facebookGallery = new FacebookGallery();
        RootPanel.get().add(facebookGallery);

        initLoadGallery(facebookGallery);
    }

    private native void initLoadGallery(FacebookGallery pl) /*-{
        $wnd.loadGallery = function (galleryId) {
            pl.@com.example.fbg.client.FacebookGallery::loadGallery(Ljava/lang/String;)(galleryId);
        };
    }-*/;
}

在主机页面中,我试图调用它:
<html>
    <head>
        <title>Facebook image gallery</title>
        <script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>     
    </head>

    <body>
        <script type="text/javascript" src="/fbg/fbg.nocache.js"></script>
        <h1>Facebook gallery test</h1>
        <script type="text/javascript">
            $(document).ready(function() {
                loadGallery('blargh');              
            });
        </script>
    </body>
</html>

不幸的是,当调用 document.ready 回调时,该函数尚未定义。当从 Firebug 控制台手动执行时,该功能可以正常工作。

我可以每 50 毫秒执行一次轮询,直到找到按该名称定义的函数,但这似乎是一种可怕的方法。

如何在加载模块以及功能可用时收到通知?

最佳答案

我会尝试在主机页面中定义一个回调函数,并在 onModuleLoad() 方法的末尾从 GWT 调用它。

主机页面功能:

<script type="text/javascript">
  function onGwtReady() {
    loadGallery('blargh');              
  };
</script>

总重量:
public void onModuleLoad() {
  FacebookGallery facebookGallery = new FacebookGallery();
  RootPanel.get().add(facebookGallery);

  initLoadGallery(facebookGallery);

  // Using a deferred command ensures that notifyHostpage() is called after
  // GWT initialisation is finished.
  Scheduler.get().scheduleDeferred(new Command() {
    public void execute() {
      notifyHostpage();
    }
  }
}

private native void notifyHostpage() /*-{
  $wnd.onGwtReady();
}-*/;

关于gwt - 找出 GWT 模块何时加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210451/

相关文章:

gwt - 在 GWT 中需要应用范围的 CSS 常量

javascript - Facebook 使用 GWT 打开图表

java - 如何将 EventListener 添加到 gwt Canvas 绘图?

java - 在 gwt 应用程序中滚动到页面顶部

java - 从 html 脚本标记调用 GWT Java 函数

javascript - GWT Javascript 注入(inject)和 JSNI

java - 使用 Microsoft Edge 测试 GWT Java 程序 - Windows 10

java - 我丢失了 GAE 数据存储区中的数据 Google 应用引擎如何帮助恢复我的数据

gwt - GWT JSNI BOOLEAN

gwt - "$ is not defined"来自 JSNI; jquery 已经存在