2014-06-12 51 views
0

我正在使用GWT和SMartGWT構建一個Web應用程序,我需要集成一個用於圖片庫的外部腳本:http://slideshow.triptracker.net/。 我現在的嘗試是:GWT + SmartGWT + Javascript:外部腳本集成

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 

但結果並沒有改變。

有人可以幫我解決這個問題嗎? 謝謝。

+0

你是什麼意思與後面之前調用.setWindow(ScriptInjector.TOP_WINDOW)?它在你的DOM中,但是z-index錯誤?在這種情況下,關於scriptinjection的所有內容都可以正常工作。我認爲你需要展示一些你的佈局代碼。 –

+0

我的意思是它在後臺,放在頁面其餘部分的「後面」層,這使得它不可見。 – Manu

回答

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. 你也可以嘗試致電.inject()

+0

1)在腳本被注入後,我正在調用按鈕單擊的本地方法。 2)試過了,它不起作用(遺憾的是沒有任何改變) – Manu