GWT + SmartGWT + Javascript:外部脚本集成

时间:2014-06-12 18:56:50

标签: javascript gwt smartgwt

我正在使用GWT和SMartGWT构建Web应用程序,我需要为照片库集成外部脚本:http://slideshow.triptracker.net/。 我目前的尝试是:

ScriptInjector.fromUrl("http://slideshow.triptracker.net/slide.js").setCallback(
              new Callback<Void, Exception>() {
                     public void onFailure(Exception reason) {
                       Window.alert("Script load failed.");
                     }
                    public void onSuccess(Void result) {
                      Window.alert("Script load success.");
                     }
                  }).inject();

之后,我称这种方法为:

代码:

native static void example(String p) /*-{

     $wnd.viewer = new $wnd.PhotoViewer();
             $wnd.viewer.add(p)
     $wnd.viewer.show(0);

}-*/;

这不会出现任何错误,但照相馆会出现背后我的入口点布局,因此无法使用它。

所以,我试图找到一个解决方法,我想参考Javasript的主要布局,运行脚本。这可能吗?我试过

 foo.getElement().getId();

但它返回了类似

的内容
 isc_VLayout_0_wrapper

然而,Javascript不喜欢它。

然后我试了

  foo.getDOM.getId();

  isc_1

但结果并没有改变。

有人可以帮我解决这个问题吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

我认为这里有两件事,可能是错的:

  1. 您有onSuccess()个回拨,可以从内部拨打jsni来电。

    //1
    ScriptInjector.fromUrl("http://slideshow.triptracker.net/slide.js").setCallback(
        new Callback<Void, Exception>() {
            public void onFailure(Exception reason) {
                //3a
            }
            public void onSuccess(Void result) {
                example("works"); 
                //3b                 
            }
        }).inject();
    //2
    example("not loaded");
    
  2. 您也可以在致电.setWindow(ScriptInjector.TOP_WINDOW)之前致电.inject()