Bootstrap v3.3.7では、以下のコードは正常に機能します。最近、何らかの理由でBootstrap v4.0.0-beta.2にアップグレードしようとしました。動作します。
私がやっていることは、スピナーとして機能するモーダルdivを表示することです。次に、ページの残りの部分に移動してロードし、ページの残りの部分のロードがすべて完了したら、モーダルdivを閉じます。再びv3で正常に動作し、v4では動作しなくなりました。ただし、コンソールを開いて$( "#divLoading")。modal( 'hide');を実行することはできます。そしてdivは消えます。
FIDDLE Boostsrap v4 [BROKE]: https://jsfiddle.net/gc1097oh/
FIDDLE Bootstrap v3 [WORKS]: https://jsfiddle.net/7skoLo2q/
<div id="divMain" class="Main">
<div id="divLoading" class="modal fade">
<div class="loader">
<br />
<br />
loading div actual div has a spinner but not need to show error
</div>
<div class="modal-dialog invisible">
</div>
</div>
</div>
Javascript:
<script type="text/javascript">
$(function () {
showLoading();
//do some work then hide
hideLoading();
});
function showLoading() {
$('#divLoading').modal({
backdrop: 'static',
keyboard: false
});
}
function hideLoading() {
$("#divLoading").modal('hide');
}
</script>
モーダルは非同期で作成されますが、showLoading()
関数とhideLoading()
関数を同期的に呼び出しています。次のように、モーダルがhideLoading関数にすでに表示されているかどうかを確認できます。
function hideLoading() {
$('#divLoading').on('shown.bs.modal', function (e) {
$("#divLoading").modal('hide');
})
}