我在页面上有一个 IFrame。提交 IFrame 的父页面上有一个按钮。我有一个提交事件的处理程序,当表单提交时,它在父页面上显示一个 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 ----这三个是从页面和 IFrame 首次加载时开始的,所以我不关心这些----然后当我执行导出时,我看到 iframebeforeunload
但这就是我看到的所有内容,我在文件完成下载时从未看到过。