完了するまでに時間がかかる可能性のある JS ルーチン (ユーザーによってトリガーされる) があります。ルーチンの実行中に、進行状況オーバーレイを画面に表示したいと考えています。ルーチンを呼び出すコードは次のとおりです (クリック イベントに応答して呼び出されます)。
function handleClick() {
$('div#progressOverlay').removeClass('hidden');
myBigRoutine();
...
$('div#progressOverlay').addClass('hidden');
}
クラス トグルは、opacity
およびvisibility
(トランジションでアニメーション化された) の変更をトリガーします。
クラスの変更自体は正常に機能しています。1 つ目は低速ルーチンの前に実行され、2 つ目は他のすべての後に実行されます。
問題は、終了後まで外観が#progressOverlay
変わらないことmyBigRoutine()
です。
その結果、プログレス オーバーレイが画面上で一瞬点滅し、すぐに再び非表示になります (すべてアニメーションなし)。
大きな JavaScript ルーチンの前に (または、それと並行して) 視覚的な更新/再描画を強制する方法はありますか?