Mon objectif est d'appeler une méthode en Java en utilisant JSNI et de faire cet appel à partir d'un code javascript handwirtten, c'est-à-dire: j'aurai une fonction à l'intérieur du $(document).ready
qui appellera une méthode en Java. Mon problème est que je ne sais pas quel script sera chargé en premier: le script GWT ou mon script javascript manuscrit, Et à cause de cela, je me demande s'il y a une solution à intégrer $(document).ready
à charger après GWT a été chargé car si le GWT est chargé en premier, les méthodes JSNI ne sont pas encore connues par la fenêtre de l'objet javascrpit et une erreur est levée.
Répondre
Il existe un moyen simple de vous assurer que votre script est exécuté après tout le reste: Mettez-le dans un élément <script>
que vous ajoutez comme la dernière chose dans votre élément <body>
:
<html><head>...</head>
<body>...
<script>/* your code here */</script>
</body>
Le navigateur doit donner des garanties sur l'ordre dans lequel les éléments script
sont exécutés: Ils sont exécutés dans l'ordre dans lequel ils apparaissent dans le DOM (ceci est également vrai pour les scripts distants, dans ce cas, le navigateur peut télécharger le code en arrière-plan mais il ne touchera pas l'élément <script>
suivant avant que le téléchargement ne soit terminé). Notez que vous n'avez pas besoin d'utiliser $(document).ready()
si vous utilisez cette astuce: Puisque votre élément script
est le dernier du DOM, par définition, le DOM doit être "prêt" au moment où il est traité.
Un bon moyen est de charger vos fichiers personnalisés JavaScript
après avoir exporté tous les JSNI requis.
Essayez une
Une fois que toutes les méthodes JSNI
sont exportés alors vous pouvez ajouter votre JavaScript
personnalisé dans la page à l'aide ci-dessous JSNI
.
public static native void loadCustomJS() /*-{
var js = $doc.createElement("script");
js.type = "text/javascript";
js.src = jsFilePath;
$doc.body.appendChild(js);
}-*/;
Créer une fonction JavaScript
dans votre code HTML/JSP et l'appeler de la classe du point d'entrée une fois que toutes les années sont exportés de JSNI.
HTML/JSP
...
<script type="text/javascript">
function loadCustomJS(){
// load your custom JavaScript here
}
</script>
...
Point d'entrée Classe:
public static native void loadCustomJS()
/*-{
$wnd.loadCustomJS();
}-*/;
Si vous souhaitez utiliser une solution pure GWT, vous pouvez profiter de GWT´s ScriptInjector:
ScriptInjector.fromUrl("http://example.com/foo.js").setCallback(
new Callback() {
public void onFailure(Exception reason) {
Window.alert("Script load failed.");
}
public void onSuccess(Void result) {
Window.alert("Script load success.");
}
}).inject();
Alors , à l'intérieur de la méthode onModuleLoad()
de votre gwt, vous pouvez placer cet extrait. De cette façon, vous n'avez pas besoin d'écrire une seule ligne supplémentaire de JS.
- 1. Problème avec $ (document) .ready
- 2. Intégrer gzip avec GWT
- 3. Lazy Load - $ (document) .ready?
- 4. $ (document) .ready en javascript
- 5. Modernizr vs $ (document) .ready()
- 6. Greasemonkey problème avec $ (document) .ready dans jQuery
- 7. $ (document) .ready() ne fonctionne pas avec Greasemonkey
- 8. seconde $ (document) événement .ready jQuery
- 9. $ (document) contenu .ready et iframe
- 10. IE7 jQuery (document) .ready() problème
- 11. Différentes formes de (document) $ .ready
- 12. JQuery $ (document) .ready ajax load
- 13. Comment utiliser correctement (document) .ready?
- 14. window.onload vs jQuery (document) .ready
- 15. jQuery (document) .ready() load() aspx
- 16. Impossible de modifier les éléments ajoutés pendant $ (document) .ready pendant $ (document) .ready
- 17. Comment intégrer GWT avec ASP.NET MVC3?
- 18. Comment intégrer le printemps avec GWT?
- 19. $ (document) .ready (function() ne fonctionne pas
- 20. $ (document) .ready() timeout pour les images
- 21. $ (document) .ready ne fonctionne pas dans IE
- 22. Erreur: $ (document) .ready n'est pas une fonction
- 23. Manière fiable d'utiliser $ (document) .ready() dans jQuery
- 24. Gestion des erreurs dans jQuery (document) .ready
- 25. $ (document) .ready en vue partielle Ruby
- 26. problème de synchronisation avec jQuery et .ready $ (document)()
- 27. Comment appeler une fonction avec des paramètres après $ (document) .ready
- 28. $ (document) .ready() non mise à feu après redirigent avec window.location
- 29. google.setOnLoadCallback avec jQuery $ (document) .ready(), est-il possible de mixer?
- 30. jQuery charger JavaScript externe avec $ (document) .ready échoue
Qu'avez-vous essayé? Il semble que ce serait une expérience assez facile à mener. –
L'expérimentation/test est important, d'autant plus que votre onModuleLoad devrait s'éteindre après que tous les autres scripts aient été chargés et que l'événement ready ait déjà été déclenché. Il ne devrait pas être nécessaire d'attendre plus longtemps, assurez-vous d'avoir un problème avant de le réparer. –