以下代码效果很好:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
function InitializeRequest(sender, args) {
document.body.style.cursor = 'progress';
}
function EndRequest(sender, args) {
document.body.style.cursor = 'default';
}
</script>
当响应返回附件时(例如,来自ReportViewer控件的PDF):
Response.AddHeader("Content-Disposition", "attachment; filename=some.pdf")
EndRequest()永远不会触发,并且“progress”光标不会重置。 Javascript调用,例如
ScriptManager.RegisterStartupScript(this, this.GetType(), "close",
"parent.EndRequest(...);", true);
可以做到这一点,但由于内容处理不可能。 你能想出一种正确的方法 - 在渲染PDF时显示等待光标,并在显示PDF时返回正常光标吗?我在这里假设一个C#上下文,但问题不是语言或平台特定的。
答案 0 :(得分:2)
问题似乎是没有触发EndRequest函数。您是否尝试过查看pageLoading和pageLoaded事件是否正在触发?
我感觉这些事件没有被触发,因为没有任何内容被发送回页面(附件没有像内联文档那样到达页面)。
我会将文件下载移动到iframe中。以下是如何执行此操作的示例:
function InitializeRequest(sender, args) {
document.body.style.cursor = 'progress';
var iframe = document.createElement("iframe");
iframe.src = 'your pdf file';
iframe.style.display = "none";
document.body.appendChild(iframe);
}
然后您可以访问iframe的onload事件。
修改强>
进一步搜索引导我this page。它似乎做了你想做的所有事情。