dojo 1.8.1の使用...スタンバイウィジェットを使用して、サーバーがAJAXリクエストで処理を行っているときに処理を表示します。
問題のあるdojox.widget.Standbyオブジェクトを作成しましたが、初めて.show()または.hide()したときに完全に機能します。2回目に.show()を実行しようとすると、表示されますが、スピナーが回転していません。アニメーション.gifの問題??
ボタンが1秒以上クリックされたときにスピナーを回転させ続けるにはどうすればよいですか?
アップデート....
私のアプリが行っているのは、ユーザーが選択できるようにdojoDataGridオブジェクトにデータを表示することです。選択はAJAXリクエストでサーバーに送信され、サーバーはユーザーがダウンロードまたは開くことができるファイル名(.csvファイル)を返します。次のJavaScriptを使用して、クライアント側で開く/保存ダイアログを作成します。
window.location.assign(path); //Open save/open dialog
この行をコメントアウトすると、ボタンをクリックするたびにスピナーが機能します。
2回目の更新...
非表示のiframeHTMLを追加しました:
<iframe src="" style="display: none;" id="ifr"></iframe>
サーバーからダウンロード可能なファイルへのパスを受け取ったら、これを使用してダイアログボックスをポップし、以下をダウンロードします。
window.document.getElementById("ifr").src=path; //Where path is location of downloadable file
これで、ダウンロード可能なファイルダイアログのすべてがスムーズに見え、ボタンをさらにクリックするとスピナーが回転し続けます...
この問題への答えを提供してくれた@Frodeに感謝します...
require(["dojox/widget/Standby", "dojo/domReady!"],
function(Standby) {
var standby = new Standby({
id: "standbyObj",
target: "standby",
color: "transparent",
zindex: "auto",
duration: "1000"
});
window.document.body.appendChild(standby.domNode);
standby.startup();
});
後でボタンがクリックされたとき:
var standObj = dijit.byId("standbyObj");
if (standObj) {
standObj.show();
}
...サーバー処理AJAXリクエスト...
処理が完了した後:
var standObj = dijit.byId("standbyObj");
if (standObj) {
standObj.hide();
}
これはすべてうまく機能しますが、ボタンをもう一度クリックすると、スピナーは表示されますが、回転していません。
他のもの:
css:
#standby
{
position: absolute;
top: 50%;
left:50%;
width:32px;
height:32px;
margin-top: -16px;
margin-left: -16px;
}
html:
<div id="standby"></div>