1

我在页面上有一个 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

但这就是我看到的所有内容,我在文件完成下载时从未看到过。

4

0 回答 0