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

时间:2010-03-31 07:58:39

标签: javascript jquery asp.net-ajax redirect download

在网页内我有一个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

中处理

2 个答案:

答案 0 :(得分:1)

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

<asp:HiddenField id="hidExportUrl" runat="server" EnableViewState="false" />

由客户端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;
        }
    });
});

答案 1 :(得分:0)

例如,如果您有弹出窗口,则定义:

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

尝试类似:

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