我正在尝试使用dojox.widget.Standby。我希望在执行某些其他代码时显示待机状态,然后在完成后隐藏。但是,当我调用standby.hide()时,我的待机似乎只显示。代码如下:
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>
任何人都知道发生了什么事吗?我也在努力使用dojo.connect来抓住onShow事件......
dojo.connect(standby, "onShow", function(){
console.log("standby onShow");
})
谢谢!
更新 - 调用standby.hide()会在FireFox中显示我的小部件,但不会显示Chrome
答案 0 :(得分:2)
显示和隐藏调用之间的代码是否恰好是同步xhrget / xhrpost ajax调用?当sync = true时,所有浏览器操作都会完全停止,因此备用动画只会在ajax调用完成后显示和隐藏,同时调用.hide()。如果是这样,并且您有多个需要同步操作的调用,那么您可以将它们异步并在响应函数中将它们链接在一起。
答案 1 :(得分:0)
我发现在创建备用小部件时我总是需要添加以下行:
dojo.body().appendChild(standby.domNode);
答案 2 :(得分:0)
如果你真的需要同步通话,而不是使用待机,你可以尝试这样做......
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也可以用dom.byId或$(在jquery中)或getElementById
代替答案 3 :(得分:0)
还要确保map-id元素在Stando启动时的高度大于零。 常见的备用数据库可以正常工作,但它位于一个没有高度或没有宽度的元素内,或者两者都没有,所以最后没有任何东西出现。