服务器重定向到下载文件后捕获重新加载/ 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)});