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

show 呼び出しと hide 呼び出しの間にラップされたコードは、たまたま同期 xhrget/xhrpost ajax 呼び出しですか? sync=true の場合、すべてのブラウザー アクションが完全に停止するため、.hide() を呼び出すと同時に、ajax 呼び出しが終了した後、スタンバイ アニメーションが表示および非表示になります。その場合、同期的に動作する必要がある複数の呼び出しがある場合は、それらを非同期にして、応答関数でチェーンすることができます。

于 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 要素の高さが 0 より大きいことも確認してください。スタンバイが正常に動作するのはよくあることですが、高さまたは幅がないか、どちらでもない要素の内部にあるため、最終的に何も表示されません。

于 2014-11-11T09:12:32.263 に答える