我的页面上有一个表单,它生成一个很大的PDF文件(最多需要20秒)。是否有方法在创建下载文件时显示一个throbber,并在下载提示出现时隐藏它?
我做了一些检查,最初认为我可以使用渐进式显示,但认为这不是它的目的。
我想我可以附加一个JS函数,当点击“下载”按钮时会触发显示我的throbber,但是当下载窗口出现时,我不太确定如何隐藏它。
在Tapestry有办法做到这一点吗?
发布于 2014-02-13 13:57:07
更好的解决办法可能是不提交表格。您可以使用javascript来构造GET url并使用iframe。
例:
<form>
<input id="someText" />
<button onclick="downloadPdf()">Click Me</button>
</form>
<script>
function downloadPdf() {
var url = "/path/to/pdf?someText=" + encodeURIComponent($("#someText").val());
startThrobber();
$('<iframe src="' + url + '" onLoad="stopThrobbber()">').appendTo('body');
}
</script>发布于 2014-02-13 13:52:08
HTTP有一个限制,您不能返回一个包含PDF和一些json的响应。
你能做的是:
document.location.href = /path/to/pdf)下载PDF。您可以看到轮询异步任务的示例的进度链。您需要将PDF存储在异步任务的某个位置(即会话、数据库或文件系统)。
https://stackoverflow.com/questions/21755729
复制相似问题