Javascript Iframe onload在文件下载后不执行?

Javascript Iframe onload在文件下载后不执行?,javascript,dom,iframe,Javascript,Dom,Iframe,我显示一个等待的对话框,然后创建一个带有文件url的iframe,并将其附加到文档中 Neptune.ShowWaitingDialog(); iFrame.src = "ExportReportAllMediaDetailsCsv/?" + $.param(object); iFrame.style.display = "none"; iFrame.onload = function () { parent.Neptune.CloseWaitin

我显示一个等待的对话框,然后创建一个带有文件url的iframe,并将其附加到文档中

 Neptune.ShowWaitingDialog();
     iFrame.src = "ExportReportAllMediaDetailsCsv/?" + $.param(object);
     iFrame.style.display = "none";
     iFrame.onload = function () {
        parent.Neptune.CloseWaitingDialog();
    };
    document.body.appendChild(iFrame);
如果服务器端出现错误,则会相应地执行iFrame.onload函数并关闭等待对话框,但如果返回文件,则不会执行onload函数,等待对话框将保持打开状态

我的问题是,如果返回一个文件,iframe是否会被刷新,从而导致onload事件执行?
如果没有,那么有没有办法检测文件是否已被返回?

我这样做的方式,摘自T.J.Crowder的答案,是这样的:

  • 添加一个隐藏的表单字段或获取名为“nonce”的参数(或任何您想要的)。在页面创建时或使用JavaScript使用唯一数字或随机字符串填充

  • 在服务器上,查找“nonce”参数并添加一个名为“FILE_READY”的cookie(或任何您想要的),然后将其值设置为nonce值。像平常一样返回文件

  • 在客户端上,当表单POST或iframe“src”被设置时——换句话说,当您启动文件下载时——启动JavaScript间隔计时器以检查“file_READY”cookie的当前值。大约每100毫秒检查一次;它不必非常频繁

  • 一旦“FILE_READY”cookie在“nonce”参数中发送了值,您就知道HTTP响应已经从服务器返回


  • 工作起来很有魅力。

    根据T.J.Crowder的回答,我这样做的方式是:

  • 添加一个隐藏的表单字段或获取名为“nonce”的参数(或任何您想要的)。在页面创建时或使用JavaScript使用唯一数字或随机字符串填充

  • 在服务器上,查找“nonce”参数并添加一个名为“FILE_READY”的cookie(或任何您想要的),然后将其值设置为nonce值。像平常一样返回文件

  • 在客户端上,当表单POST或iframe“src”被设置时——换句话说,当您启动文件下载时——启动JavaScript间隔计时器以检查“file_READY”cookie的当前值。大约每100毫秒检查一次;它不必非常频繁

  • 一旦“FILE_READY”cookie在“nonce”参数中发送了值,您就知道HTTP响应已经从服务器返回

  • 工作起来很有魅力