ロード画面プラグインを作成しました。シナリオは、ajaxローディングを使用してページナビゲーションを行っていることです。したがって、ajaxを使用してページをロードする前に、コードを使用してロード画面を表示し$('body).loadingMask('show')
、ページが完全にロードされたら、コードを使用してロード画面を削除します$('body').loadingMask('hide)
。
問題は、プラグイン内のターゲットdom要素の取得に多少の遅延があることです。
これはコードの一般的な構造です
$('body').loadingMask('show');
$.ajax({
url : 'views/next.html',
async : false,
success : function(content, textStatus, jqXHR) {
$('body').append(content);
},
error : function(content, textStatus, jqXHR) {
throw "Unable to load template. Please check the path and name of the template"
}
});
$('body').loadingMask('hide');
問題は、loadingMaskプラグインのshow関数内で、ターゲットのdom要素(つまりbody)の取得に遅延が発生することです。したがって、実際には、コード$('body).loadingMask('show')
はajaxページの読み込みが完了した後にのみ実行されます。
それを機能させるために、私は時間遅延を追加しました。これはうまくいくようです。
これは変更されたコードです
$('body').loadingMask('show');
setTimeout(function(){
$.ajax({
url : 'views/next.html',
async : false,
success : function(content, textStatus, jqXHR) {
$('body').append(content);
},
error : function(content, textStatus, jqXHR) {
throw "Unable to load template. Please check the path and name of the template"
}
});
},500);
$('body').loadingMask('hide');
これで、ページの読み込み中に読み込み画面が表示されます。