2011-11-01 11 views
10

Ho un widget che dipende da alcuni file JS esterni e vorrei caricare pigro tutte queste risorse esterne. Ho già utilizzato la suddivisione del codice per caricare pigro il codice GWT che riguarda il widget, ma i file JS definiti nel gwt.xml, utilizzando il tag script, sono comunque caricati, il che non è desiderabile.GWT: caricamento differito di risorse JS esterne

Esiste un metodo GWT standard per caricare queste risorse esterne su richiesta? Posso farlo io stesso usando il raw JS, ma preferirei non perdere tempo anche su questo.

+0

C'è ancora più discussione su questo sul gruppo Google GWT: ["Come includere le librerie Javascript di terze parti in una libreria/widget gwt riutilizzabile?"] (Https://groups.google.com/d/topic/ google-web-toolkit/Xiz8XmPhJzo/discussione) – blong

risposta

16

Penso che vorrai dare un'occhiata alla classe com.google.gwt.core.client.ScriptInjector. From the javadocs:

Creare dinamicamente un tag script e collegarlo al DOM.

...

Uso con script caricato come URL:

ScriptInjector.fromUrl("http://example.com/foo.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(); 

Questo codice può naturalmente essere invocato dall'interno i punti di divisione, o addirittura qualsiasi punto del codice.

+0

Brillante! Grazie Colin. Anche se ora dovrò migrare da 2.3 a 2.4 :) Vedrò come va. –

+1

da 2.3 a 2.4 non dovrebbe essere un grosso problema, ma se lo è, puoi vedere come ScriptInjector.fromUrl funziona con ScriptElement e puoi crearlo nella tua app senza eseguire l'aggiornamento. –

1

ScriptInjector è abbastanza portatile. Non ha dipendenze esterne, quindi dovresti essere in grado di eseguire il backport nella tua applicazione 2.3 senza molti problemi.

Problemi correlati