我在页面上有一个IFrame。父页面上有一个提交IFrame的按钮。我有一个submit事件的处理程序,它在表单提交时在父页面上显示ProgressBar Image。这部分工作正常,因此当表单开始提交回服务器时,图像会显示出来。
现在发生的事情是在服务器上生成一个Excel文件,然后下载回客户端。我需要做的是知道图像何时完成下载到客户端,以便我可以将该ProgressBar图像隐藏在父页面上。
我不知道我可以了解哪些事件可以了解IFrame何时从服务器发回,并且该文件可供下载。
我在IFrame中有以下代码
$(document).ready(function () {
window.parent.$('#ExportWait').addClass('hidden');
var iframe = window.frameElement;
if (iframe) {
iframe.contentDocument = document;//normalization: some browsers don't set the contentDocument, only the contentWindow
var parent = window.parent;
$(parent.document).ready(function () {//wait for parent to make sure it has jQuery ready
var parent$ = parent.jQuery;
parent$(iframe).trigger("iframeloading");
$(function () {
parent$(iframe).trigger("iframeready");
});
$(window).load(function () {//kind of unnecessary, but here for completion
parent$(iframe).trigger("iframeloaded");
});
$(window).unload(function (e) {//not possible to prevent default
parent$(iframe).trigger("iframeunloaded");
});
$(window).on("beforeunload", function () {
parent$(iframe).trigger("iframebeforeunload");
});
});
}
$("form").submit(function (e) {
//console.log('Here We Are');
//alert('Exporting');
//window.parent.$('#ExportWait').removeClass('hidden');
return true;
});
});
我在父窗口中有以下代码
$(document).ready(function () {
$("iframe").on("iframeloading iframeready iframeloaded iframebeforeunload iframeunloaded", function (e) {
console.log(e.type);
});
});
我可以在控制台中看到以下内容 iframeloading iframeready iframeloaded ----这3个是从页面和IFrame首次加载时开始的,所以我不关心其中的任何一个 ----然后,当我进行导出时,我看到了 iframebeforeunload
但这就是我所看到的,当文件下载完毕时我从未看到过。