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

GWT + SmartGWT + Javascript: external script integration

本文关键字:脚本 集成 外部 Javascript SmartGWT GWT      更新时间:2023-09-26

我正在使用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);
}-*/;

这没有给出任何错误,但是图片库出现我的入口点布局后面,所以不可能使用它。

所以,我正试图找到一个解决方案,我想参考javascript的主布局,在上面运行脚本。这可能吗?我试过

 foo.getElement().getId();

但是它返回给我类似

的东西
 isc_VLayout_0_wrapper

但是,Javascript不喜欢它。

Then I try

  foo.getDOM.getId();
  isc_1

但是结果没有改变。

有人能帮我解决这个问题吗?谢谢你。

我认为有两件事可能是错误的:

  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()