2011-11-01 5 views
10

J'ai un widget en fonction de certains fichiers JS externes, et je voudrais charger paresseux toutes ces ressources externes. J'ai déjà utilisé le fractionnement de code pour charger paresseux le code GWT qui concerne le widget, mais les fichiers JS définis dans le fichier gwt.xml, utilisant la balise script, sont quand même chargés, ce qui n'est pas souhaitable.GWT: chargement différé de ressources JS externes

Existe-t-il un moyen GWT standard de charger ces ressources externes à la demande? Je peux le faire moi-même en utilisant JS brut, mais je préfère ne pas passer du temps là-dessus aussi.

+0

On en parle encore plus sur le groupe Google GWT: ["Comment inclure des bibliothèques Javascript tierces dans une bibliothèque/un widget gwt réutilisable?"] (Https://groups.google.com/d/topic/ google-web-toolkit/Xiz8XmPhJzo/discussion) – blong

Répondre

16

Je pense que vous voulez jeter un oeil à la classe com.google.gwt.core.client.ScriptInjector. From the javadocs:

Créez dynamiquement une balise de script et attachez-la au DOM.

...

Utilisation avec le script chargé comme une 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(); 

Ce code peut bien sûr être invoqué à partir de vos points de division, ou bien n'importe où dans votre code.

+0

Brilliant! Merci Colin. Bien que, maintenant je vais devoir migrer de 2.3 à 2.4 :) Je vais voir comment ça se passe. –

+1

2.3 à 2.4 ne devrait pas être un gros problème, mais si c'est le cas, vous pouvez regarder comment ScriptInjector.fromUrl fonctionne avec le ScriptElement, et vous pouvez le construire dans votre application sans mettre à jour. –

1

ScriptInjector est assez portable. Il n'a aucune dépendance externe, donc vous devriez être capable de le sauvegarder dans votre application 2.3 sans trop de problème.

Questions connexes