0

我正在尝试将 Jquery 库添加到我的项目中,然后添加tipsy.js 以及使用工具提示做一个“插件”。

问题是我已经在我的 gwt.xml 文件中添加了 js,但我仍然无法将“$”调用到 jQuery

我的 gwt.xml 文件是:

<module ... 
  <!-- jquery and plugins -->
  <script src="/javascripts/jquery.min.js"></script>
  <script src="/javascripts/tipsy.js"></script>

js中调用的方法是:

public static native void allClassName(String className) /*-{
  $wnd.jQuery(className).tipsy({trigger: 'focus', gravity: 'w'});
}-*/;

但我总是得到这个错误:

在 java.lang.Thread.run(Thread.java:680) 引起:com.google.gwt.core.client.JavaScriptException: (TypeError): Object [object Window] 在 com.google 没有方法 'jQuery'。 gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:248) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) 在 com.google.gwt.dev.shell.ModuleSpace。 com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:289) 的调用Native(ModuleSpace.java:561) com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)在 netagenda.ui.gwt.client.gin.ClientGinjectorImpl.com$gwtplatform$mvp$client$HandlerContainerImpl_automaticBind_methodInjection_ _ _(ClientGinjectorImpl.java) 在 netagenda.ui.gwt.client.gin.ClientGinjectorImpl.memberInject_Key$type$netagenda$ui$gwt$client$pages$backend$customers$presenter$CustomerPagePresenter$_annotation$$none$$(ClientGinjectorImpl.java :1395) 在 netagenda.ui.gwt.client.gin.ClientGinjectorImpl.create_Key$type$netagenda$ui$gwt$client$pages$backend$customers$presenter$CustomerPagePresenter$_annotation$$none$$(ClientGinjectorImpl.java:1408 ) 在 netagenda.ui.gwt.client.gin.ClientGinjectorImpl.get_Key$type$netagenda$ui$gwt$client$pages$backend$customers$presenter$CustomerPagePresenter$_annotation$$none$$(ClientGinjectorImpl.java:1421) 在netagenda.ui.gwt.client.gin.ClientGinjectorImpl.access$12(ClientGinjectorImpl.java:1419) 在 netagenda.ui.gwt.client.gin.ClientGinjectorImpl$13$1.onSuccess(ClientGinjectorImpl.java:2768) 在 com.google.gwt 。核。client.GWT.runAsync(GWT.java:255)

4

2 回答 2

2

我已经解决了将文件添加到 home.html 文件中的问题:

    <!-- jquery and plugins -->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">  </script>
    <script src="http://onehackoranother.com/projects/jquery/tipsy/javascripts/jquery.tipsy.js"></script>

之后是我使用 gwt 调用插件的方法:

    public static native void allClassName(String className) /*-{
      $wnd.jQuery(className).tipsy({trigger: 'focus', gravity: 'w'});
    }-*/;
于 2012-09-20T16:10:10.407 回答
0

在 GWT 的最新版本中,您无法在模块中添加 javascript 文件,您需要以这种方式注入您的 EntryPoint:

在您的 EntryPoint 类中:

ScriptInjector.fromString(PluginClientBundle.INSTANCE.plugins().getText())
        .setWindow(ScriptInjector.TOP_WINDOW)
        .inject();

你的 Bundle 类

public interface PluginClientBundle extends ClientBundle {
  static final PluginClientBundle INSTANCE = GWT.create(PluginClientBundle.class);

   @Source("resource/js/jquery-plugin.min.js")
   TextResource plugins();
}
于 2015-01-08T10:46:04.643 回答