我的页面上有一个生成大型 PDF 文件的表单(最多可能需要 20 秒)。有没有办法在创建下载文件时显示一个 throbber 并在出现下载提示时隐藏它?
我做了一些检查,最初认为我可以使用渐进式显示,但认为这不是它的目的。
我想我可以附加一个 JS 函数,该函数会在单击“下载”按钮时触发显示我的 throbber,但我不太确定在下载窗口出现时如何隐藏它。
有没有办法在 Tapestry 中做到这一点?
我的页面上有一个生成大型 PDF 文件的表单(最多可能需要 20 秒)。有没有办法在创建下载文件时显示一个 throbber 并在出现下载提示时隐藏它?
我做了一些检查,最初认为我可以使用渐进式显示,但认为这不是它的目的。
我想我可以附加一个 JS 函数,该函数会在单击“下载”按钮时触发显示我的 throbber,但我不太确定在下载窗口出现时如何隐藏它。
有没有办法在 Tapestry 中做到这一点?
HTTP 有一个限制,即您不能返回包含 PDF 和一些 json 的单个响应。
你可以做的是:
document.location.href = /path/to/pdf
)下载 PDF您可以查看进度链接以获取轮询异步任务的示例。您需要将 PDF 存储在异步任务中的某个位置(即会话、数据库或文件系统)。
可能更好的解决方案是不提交表单。您可以使用 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>