私は asp.webforms アプリケーションを持っており、ページ ai にはプログレスバーと iframe を含む非表示の div があります。iframe には、同じドメインの別のアプリケーションからフォームを読み込んでみます。
<div id="pagePreview" style="display: none;">
<div class="progressBarWrapper" id="waitDialog" style="opacity:1;filter:alpha(opacity=100);display:none;">
<div class="progressBarDetail" style="margin-top:25%;">
<asp:Image ID="imgLoading" runat="server" ImageUrl="~/Images/wait.gif" />
</div>
</div>
<iframe id="previewContent" onreadystatechange="iframeLoaded(this);"></iframe>
</div>
クリックイベントで、このdivをjqueryUIダイアログに表示する関数を呼び出し、Iframeのページがロードされなくなるまでプログレスバーを表示したい.
var isClickedForDialog = false;
function iframeLoaded(args) {
if (args.readyState == "complete" && isClickedForDialog) {
var pagePreview = $('#pagePreview'); // dialog
var waitDialog = $('#waitDialog'); // progress
waitDialog.hide();
isClickedForDialog = false;
}
}
function showModalWindow(url, hideCloseButton) {
isClickedForDialog = true;
var previewContent = $('#previewContent'); // Iframe
var pagePreview = $('#pagePreview'); // dialog
var waitDialog = $('#waitDialog'); // progresss
waitDialog.show();
previewContent.attr('src', url);
pagePreview.dialog(
{
draggable: false,
resizable: false,
height: 764,
width: 1020,
modal: true,
close: function (event, ui) {
previewContent.attr('src', '');
},
open: function (event, ui) {
if (hideCloseButton) {
$(this).parent().children().children('.ui-dialog-titlebar-close').hide();
}
}
});
}
IE ではすべて正常に動作します。ダイアログ ボックスとプログレス バーが表示され、URL が iframe に読み込まれると、プログレス バーが消え、IFrame に Web フォームのみが表示されます。
しかし、FireFox と Chrome ではこれは機能しません。
ブラウザは onreadystatechange イベントを無視します。次のようにイベントを処理しようとしました:
$('#previewContent').bind('onreadystatechange', iframeLoaded, false);
$('#previewContent').on('onreadystatechange', iframeLoaded);
しかし、成功しませんでした。
これを解決する方法を知っていますか?ありがとう