約 500 行のテーブルを作成していますが、ブラウザーがレンダリングするのに数秒かかりますが、フリーズしているように見えます。これが、ユーザーの忍耐を求めるメッセージを表示したい理由です。
$.ajax({
url: '{{ search_url }}',
success: function (response) {
$('#progress').text('Rendering results, please wait...');
clear_table();
populate_table(response);
}
});
メッセージは表示されません - どうやらブラウザ (Chrome 23 でテスト済み) はすべての DOM 変更をバッファリングし、一度にすべてをレンダリングします。
回避策として、実行がイベントループに戻るまでテーブルへの入力を遅らせると、実際にメッセージが表示されることがわかりました。
$.ajax({
url: '{{ search_url }}',
success: function (response) {
$('#progress').text('Rendering results, please wait...');
window.setTimeout(function () {
clear_table();
populate_table(response);
}, 0);
}
});
この方法は常に機能するのでしょうか、それともこの場合のより良い手法があるのでしょうか。