Jqueryで開くモーダルボックスがあります。閉じるボタンが呼び出されると、モーダル ボックスが閉じられます。すべて正常に動作しますが、モーダル ボックスを開いたり閉じたりするほど、モーダル ボックスを閉じるのに時間がかかります。
window.closeModal = function () {
modal = $("div.modal-overlay");
windowHeight = $(window).height();
// Until here performance is good
modal.animate({top: windowHeight, }, 800, function () {
// This is the problem
modal.hide();
$("body").css("overflow-y", "scroll");
});
}
すべての行にコンソール ログを配置しました。modal.animate 関数を実行するまで、すべてが即座に実行されます。モーダルを開いて閉じるボタンを押すたびに、modal.animate の実行が開始されるまでに時間がかかります。
誰か光を当ててください。
@EDIT:問題を示すjsfiddleを作成しました。
モーダルを開いてからモーダルを閉じるだけです。これを4 ~ 5回実行して、遅延が大きくなるのを確認します
@@編集: 非常に奇妙なことが起こります。
openModal は 1 回実行されますが、iframe.load はモーダルの開閉で # 回実行されます ...
window.openModal = function (url) {
console.log("open start");
modal = $("div.modal-overlay");
modalIframe = $("div.modal-overlay iframe");
windowHeight = $(window).height();
modal.css("bottom", "0");
modalIframe.attr("src", url + "?frame=true");
modalIframe.load(function () {
console.log("open load")
modalIframe.css('height', windowHeight);
modal.show().animate({
top: 0,
}, 800, function () {
$("body").css("overflow-y", "hidden");
});
});
}