dojox.Standby直到调用.hide()才显示

时间:2012-04-25 13:55:12

标签: dojo standby

我正在尝试使用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

4 个答案:

答案 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启动时的高度大于零。 常见的备用数据库可以正常工作,但它位于一个没有高度或没有宽度的元素内,或者两者都没有,所以最后没有任何东西出现。