我有一个链接,当用户点击它时会重定向到相同的页面,只是带有额外的参数:
<a id="lnkExportToPDF" href="javascript:void(0)">Export</a>
$('#lnkExportToPDF').click(function (e) {
e.preventDefault();
window.location.href = path + 'users/export/' + parm1 + '/' + parm2;
});
在服务器端,我通过检查请求路径中是否包含 "export",如果找到,就将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();
一切正常,用户可以下载文件,但是用户使用页面上的loader.gif
进行任何其他操作时,显示一个未动画化的加载器。
这可能是什么原因造成的?在响应完成后是否有任何刷新/重新加载页面/javascript的方法?
编辑:我在这里找到了一个有用的JS工具:http://fgnass.github.io/spin.js/,但除非绝对必要,否则我不想使用它
编辑2:我还尝试使用通用处理程序(.ashx)来处理请求(即更改href以指向处理程序),但是一旦页面重定向并且写入文件,同样的事情就会发生
编辑3:目前只在Firefox浏览器中出现这个问题。我已经尝试了Chrome和IE,在这些浏览器中gif保持动画状态。(每个最新版本)
编辑4:如果我使用src作为图像的iframe,则可以解决此问题,但这非常hacky,并且在所有浏览器中与居中/填充/边距相关的样式都看起来不同。
编辑5:是的。如果我使用firebug检查静止的gif,它会神奇地解冻自己。
$('.loader').height()
的方法强制重新绘制 loader.gif。我尝试过了,但无法重现你的问题,所以无法自行测试。但通常在 firebug 修复问题时会起作用。 - pstenstrm