アクティビティ インジケーターを開始するメソッドと、特定のインジケーターを停止する別のメソッドを作成しました。次に、時間のかかるタスクを実行するときは、start メソッドを前に呼び出し、stop メソッドを後で呼び出します。呼び出しの例を以下に示します。
// Show loading
viewControllerShowAjax();
// Tasks that take time including large calculations and ajax requests
app.timeConsumingFunction();
// Hide loading
viewControllerHideAjax();
これはfirefoxでは機能しますが、IE または Chrome では機能しません。これに対する修正はありますか?
編集: 以下は私が使用している機能です:
function viewControllerInit() {
// Other initializations
...
// Initializing the activity indicator; the activity indicator is simply a jqueryui modal view with a spinjs spinner in it.
$(this.ajaxModalSelector).dialog({
resizable : false,
dialogClass : "no-close ajax",
autoOpen : false,
height : 500,
width : 500,
modal : true,
open: function( event, ui ) {
$(this.ajaxModalSelector).dialog("open");
var opts = {
lines: 12,
length: 0,
width: 20,
radius: 40,
color: '#000',
speed: 1.3,
trail: 50,
shadow: false,
};
this.spinner = new Spinner(opts).spin(document.getElementById("ajax-modal"));
},
beforeClose: function( event, ui ) {
this.spinner.stop();
}
});
}
// Opens the jquery ui modal view
function viewControllerShowAjax() {
$(this.ajaxModalSelector).dialog("open");
}
// Closes the jquery ui modal view
function viewControllerHideAjax() {
$(this.ajaxModalSelector).dialog("close");
}
編集:問題に関する詳細については; アクティビティ インジケーターに対して非表示関数が呼び出されない場合、時間のかかるタスクが完了した後に表示されることがわかりました。繰り返しますが、これは IE と Chrome の両方での動作ですが、Firefox ではそうではありません。