服务器重定向到下载文件后捕获重新加载/ endrequest事件

在网页内部,我有一个Excel下载按钮,该按钮重定向到通过application/ms-excel MIME类型提供所请求的Excel文件的网页,这通常会导致在浏览器中下载文件。

在网页中,我有以下jQuery代码:

 $(document).ready(function () { $(".div-export .button").click(function () { setBusy(true); }); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { setBusy(false); }); }); 

在用户等待提供Excel文件时显示繁忙的动画。

问题是:动画在文件下载后没有结束( setBusy(false); )因为endRequest事件没有被触发,可能是因为服务器重定向。

有人有解决方法吗?

编辑 :下载按钮在UpdatePanel处理。

我决定使用在重置鼠标光标后触发的javascript文档重定向,而不是使用服务器重定向。 为此,我已经包含了一个隐藏字段来保存url:

  

哪个由客户端end_request处理程序处理:

 $(document).ready(function () { $(".div-export .button").click(function () { setBusy(true); }); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { setBusy(false); var url = $("[id$='hidExportUrl']").val(); if (url && url != "") { $("[id$='hidExportUrl']").val(""); window.location = url; } }); }); 

例如,如果你有一个弹出窗口,定义:

 var myWindow = window.open("/MyPopup.aspx, "myWindow", "height=550,width=780,top=100,left=100"); 

尝试以下方法:

 $(myWindow).bind('unload', function(){setBusy(false)});