2012-04-25 1 views
0

J'essaie d'utiliser un dojox.widget.Standby. Je veux que le mode veille s'affiche pendant que d'autres codes sont en cours d'exécution, puis masquer une fois terminé. Cependant, ma veille ne semble s'afficher que lorsque j'appelle standby.hide(). Code ci-dessous:dojox.Standby ne s'affiche pas jusqu'à ce que .hide() s'appelle

standby = new dojox.widget.Standby({ 
    target : "map-id" 
}); 

     <div id="map-id" class="centerPanel" 
     data-dojo-type="dijit.layout.ContentPane" 
     data-dojo-props="region: 'center', style: 'width: 1300px;'"> 
     <span id="toolbar"></span> 
     <div id="co-ords" style="position:absolute; bottom:0px; z-index:1000; font-size:8; font-weight:bold; background-color: #FFFFFF"></div> 
    </div> 

Quelqu'un sait ce qui se passe? J'ai aussi du mal à attraper l'événement onShow en utilisant dojo.connect ...

dojo.connect(standby, "onShow", function(){ 
    console.log("standby onShow"); 
}) 

Merci!

Mise à jour - appelant standby.hide() montre mon widget dans FireFox, mais pas Chrome

Répondre

2

Est-ce le code enveloppé entre les appels show et hide arrive à être synchrone xhrget/xhrpost ajax calls? Lorsque sync = true, toutes les actions du navigateur s'arrêtent complètement, et donc l'animation en attente ne s'affiche et ne se cache que très rapidement une fois les appels ajax terminés, en même temps que vous appelez .hide(). Si c'est le cas et que vous avez plusieurs appels qui doivent agir de manière synchrone, vous pouvez simplement les rendre asynchrones et les enchaîner dans leurs fonctions de réponse.

0

J'ai trouvé que je dois toujours ajouter la ligne suivante lors de la création du widget de veille:

dojo.body().appendChild(standby.domNode); 
+0

acclamations craig mais je crains que cela ne l'a pas résolu. Vous devez toujours appeler standby.hide() pour voir la chose –

0

Si vous avez vraiment besoin de l'appel synchoronous, au lieu d'utiliser de veille, vous pouvez essayer de faire de cette façon ...

dojo.byId('loading_status').innerHTML='Loading 0%...'; 
sync_ajax_call_1(); 
dojo.byId('loading_status').innerHTML='Loading 25%...'; 
sync_ajax_call_2(); 
dojo.byId('loading_status').innerHTML='Loading 50%...'; 
sync_ajax_call_3(); 
dojo.byId('loading_status').innerHTML='Loading 75%...'; 
sync_ajax_call_4(); 
dojo.byId('loading_status').innerHTML='Loading 100%...'; 

dojo.byId peut également être substitué par dom.byId ou $ (en jquery) ou getElementById

0

assurez-vous également que l'élément map-id a également une hauteur supérieure à zéro au moment du démarrage autonome. Il est courant qu'un mode veille fonctionne correctement, mais il se trouve à l'intérieur d'un élément qui n'a pas de hauteur ou pas de largeur ou aucun des deux, donc finalement rien ne s'affiche.

Questions connexes