0

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

4 回答 4

2

包含在显示和隐藏调用之间的代码是否恰好是同步的 xhrget/xhrpost ajax 调用?当 sync=true 时,所有浏览器操作完全停止,因此待机动画只会在 ajax 调用完成后快速显示和隐藏,同时您正在调用 .hide()。如果是这样,并且您有多个调用需要同步执行,那么您可以将它们设为异步并将它们链接到它们的响应函数中。

于 2012-05-22T12:49:02.850 回答
0

我发现在创建备用小部件时总是需要添加以下行:

dojo.body().appendChild(standby.domNode);
于 2012-04-25T14:02:14.283 回答
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

于 2013-09-27T01:18:36.627 回答
0

还要确保在待机启动时 map-id 元素的高度也大于零。正常工作的待机很常见,但它位于没有高度或没有宽度或两者都没有的元素内,所以最终什么都没有出现。

于 2014-11-11T09:12:32.263 回答