J'exporte une méthode GWT javascript natif de la manière suivante:Trouver quand un module GWT a chargé
public class FaceBookGalleryEntryPoint implements EntryPoint {
@Override
public void onModuleLoad() {
FacebookGallery facebookGallery = new FacebookGallery();
RootPanel.get().add(facebookGallery);
initLoadGallery(facebookGallery);
}
private native void initLoadGallery(FacebookGallery pl) /*-{
$wnd.loadGallery = function (galleryId) {
[email protected]::loadGallery(Ljava/lang/String;)(galleryId);
};
}-*/;
}
Dans la page d'accueil, je suis en train de l'appeler:
<html>
<head>
<title>Facebook image gallery</title>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript" src="/fbg/fbg.nocache.js"></script>
<h1>Facebook gallery test</h1>
<script type="text/javascript">
$(document).ready(function() {
loadGallery('blargh');
});
</script>
</body>
</html>
Malheureusement, lorsque le rappel document.ready est appelé, la fonction n'est pas encore définie. Lorsqu'elle est exécutée manuellement à partir de la console Firebug, la fonction fonctionne très bien.
Je pourrais effectuer un sondage toutes les 50 millisecondes jusqu'à ce que je trouve une fonction définie par ce nom, mais cela semble être une approche horrible.
Comment puis-je être informé lorsque le module est chargé et donc quand la fonction est disponible?
Merci, semble intéressant - en particulier le bit DeferredCommand. Je vais essayer ce soir. –
BTW, avec GWT 2.1, vous devriez utiliser Scheduler(). Get(). ScheduleDeferred() –
Merci pour l'indice Scheduler. – vanje