window.location.href导致动画gif加载器在Firefox中冻结

use*_*119 15 javascript asp.net firefox jquery http

我有一个链接,点击时将用户重定向到同一页面,除了附加参数:

<a id="lnkExportToPDF" href="javascript:void(0)">Export</a>

$('#lnkExportToPDF').click(function (e) {
    e.preventDefault();
    window.location.href = path + 'users/export/' + parm1 + '/' + parm2;
});
Run Code Online (Sandbox Code Playgroud)

在服务器端,我通过在请求路径中检查"导出"来处理它,如果找到它,我会将PDF文件写入响应:

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "application/pdf");
response.AddHeader("Content-Disposition", String.Format("attachment; filename=" + filename + ".pdf; size={0}", buffer.Length.ToString()));
response.BinaryWrite(buffer);
response.End();
Run Code Online (Sandbox Code Playgroud)

一切正常,用户可以下载文件,但用户使用loader.gif页面上的任何其他操作都会显示未动画的加载程序.

是什么导致这种情况发生?在响应完成后有没有办法刷新/重新加载页面/ javascript?

编辑:我在这里找到了一个有用的JS工具:http://fgnass.github.io/spin.js/但除非绝对必要,否则我不想使用它

edit2:我也尝试使用通用处理程序(.ashx)来处理请求(即将href更改为指向处理程序),但是一旦页面重定向并且文件被写入,同样的事情就会发生

edit3:到目前为止,问题只发生在Firefox中.我尝试过使用Chrome和IE浏览器,gif在这些浏览器中保持动画效果.(每个的最新版本)

edit4:如果我使用带有src的iframe作为图像它可以解决问题,但它非常hacky并且它的样式在所有浏览器中看起来与居中/填充/边距不同.

编辑5:是的.如果我用萤火虫检查冷冻的GIF,它会神奇地解冻自己.

pst*_*trm 4

我设法在 Firefox 中重现这个问题,但我真的找不到“解冻”gif 的方法。当我在下载后添加一个完全不同的文件并且该文件也被冻结时,我放弃了这种方法。

相反,我所做的是测试触发下载的不同方式。我发现没有window.location有效的解决方案,但有效的是:

window.open(path + 'users/export/' + parm1 + '/' + parm2);
Run Code Online (Sandbox Code Playgroud)

window.open打开一个新选项卡并通过该选项卡而不是当前选项卡下载文件window.location。下载开始后,它将返回当前选项卡。

编辑

您还可以使用隐藏的 iframe:

var iframe = document.getElementById('iframe');
iframe.src = path + 'users/export/' + parm1 + '/' + parm2;
Run Code Online (Sandbox Code Playgroud)