【问题标题】:How to use JavaScript with gwt Uibinder如何在 gwt Uibinder 中使用 JavaScript
【发布时间】:2012-08-14 03:01:39
【问题描述】:

我想在我用 GWT 编写的应用程序中执行 JavaScript。 这是在常规 HTML 中工作的代码:

<html>
  <head>
  </head>

  <body>
    <ul>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <script src="jquery.js"></script>
    <script src="jquery.roundabout.js"></script>
    <script>
      $(document).ready(function() {
          $('ul').roundabout();
      });
    </script>
  </body>
</html>

(假设jquery.jsjquery.roundabout.js 在同一个文件夹中。)

我有一个somePresenter(带有someView.javasomeView.ui.xml),我希望上面的代码在someView.ui.xml 中工作。

我将上面的代码复制粘贴到 XML 中(&lt;html&gt; 标签除外,我有 &lt;g:HTMLPanel&gt; 标签) 但 JavaScript 似乎没有被执行(我看到的只是脚本之前的列表)。

我怎样才能让它工作?

相关问题:我可以使用 GQuery 吗? (类似于:GQuery.$().getScript(jquery.roundabout.js) 加载外部 js 脚本)?

提前致谢

【问题讨论】:

  • 你为什么不把 jQuery 和插件脚本放在你的主机页面中呢?配置正确的缓存不会影响您的应用程序性能。

标签: java javascript gwt uibinder


【解决方案1】:

您不能在 UiBinder 中放置 &lt;script&gt; 并期望看到它被加载和执行,原因与您不能在 JS 中以相同的 exactations 将 &lt;script&gt; 放在 innerHTML 中的原因相同(仅仅是因为 HTMLPanel并且 UiBinder 将使用 innerHTML under-the-hood)。

如果您需要动态加载脚本,请查看ScriptInjector

ScriptInjector.fromUrl(GWT.getModuleBaseURL() + 'jquery.js').inject();

我想 GQuery 使用 ScriptInjector 或类似的工作方式。

【讨论】:

    【解决方案2】:

    我最终设法通过放置

    来做到这一点
    <script src="jquery.js"></script>
    <script src="jquery.roundabout.js"></script>
    

    project.html 然后在加载相关页面(我的演示者)时使用 JSNI 调用执行相关 JavaScript。

    【讨论】:

      猜你喜欢
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      相关资源
      最近更新 更多