1

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>
4

1 に答える 1

1

この問題の解決策は次のとおりです。

非表示のiframeで作成:

 <iframe src="" style="display: none;" id="ifr"></iframe>

サーバーがダウンロード可能なファイルへのパスを使用してAJAX要求に応答したら、次のJavaScriptを使用して、クライアントのWebブラウザーに[開く/保存]ダイアログボックスを表示します。

 window.document.getElementById("ifr").src=path;  //Where path is location of downloadable file

これは見栄えが良いだけでなく、スタンバイスピナーはボタンを複数回クリックしても回転し続けます。

問題の解決策を提供してくれたたくさんの@Frodeに感謝します。8)

于 2012-12-18T19:30:33.847 に答える