我有一个来自第三方的页面滑块类型小部件非常标准,因为它在文档中的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文件。或许我应该以不同的方式解决这个问题?
我宁愿不必对第三方窗口小部件进行任何修改,但如果需要/可能,我愿意做出小的修改。它已被混淆,因此很难阅读。
答案 0 :(得分:3)
从GWT调用javascript需要以$ wnd
开头详见http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
private native void initSlider() /*-{
$wnd.Index.initLayerSlider();
}-*/;