从GWT调用.js文件中的函数

时间:2014-01-31 13:44:49

标签: gwt jsni

我有一个来自第三方的页面滑块类型小部件非常标准,因为它在文档中的HTML上运行一些jquery代码(在小部件提供的init函数内),以查找感兴趣的类。

我的问题是我正在使用GWT,因此我的HTML正在生成,然后由GWT javascript文件插入到页面中。插入的HTML具有滑块小部件的所有适当标签。因此,在添加(到DOM)后,我需要运行init js代码,以便滑块按预期工作。我创建了一个JSNI来进行调用:

private native void initSlider() /*-{

      Index.initLayerSlider();

}-*/;

我在nocache.js GWT文件之前加载了HTML文件头部的索引,但是当我加载网站时出现javascript控制台错误:未捕获的ReferenceError:索引未定义所以我试图

private native void initSlider() /*-{
   jQuery(document).ready(function() {
      Index.initLayerSlider();
   });
}-*/;

并且jQuery也加载到我的HTML文件的头部但是我得到了类似的错误:未捕获的ReferenceError:未定义jQuery

如何从GWT的外部.js文件中调用此函数?我想我需要做些什么来确保浏览器已经加载并在GWT运行之前运行.js文件,或者当它到达那里时GWT暂停直到加载了.js文件。或许我应该以不同的方式解决这个问题?

我宁愿不必对第三方窗口小部件进行任何修改,但如果需要/可能,我愿意做出小的修改。它已被混淆,因此很难阅读。

1 个答案:

答案 0 :(得分:3)

从GWT调用javascript需要以$ wnd

开头

详见http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

private native void initSlider() /*-{
  $wnd.Index.initLayerSlider();
}-*/;