我使用以下模式在Grails上生成pdf:
可选步骤 用户将选择要下载* .pdf或在另一个选项卡上打开它,默认是将其打开到另一个选项卡。
主要步骤:
它会运行一个像这样的JavaScript块:
var generate = "<sample url>"
// some amazing processing goes here that appends data to the
// query string.
window.open(generate,'_blank');
然后它将打开一个新标签(或根据他选择的选项开始下载)。
注意:打开的标签不是普通的html标记,而是在浏览器标签上呈现的
我已经成功生成了报告(新标签和下载方法),但我的问题是我不知道如何检测该标签是否已完成加载,而我不能做第7步。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
您可以使用Spring Websocket将代的状态发送回JavaScript,就像这样
<script type="text/javascript">
$(function () {
var socket = new SockJS("${createLink(uri: '/stomp')}");
var client = Stomp.over(socket);
client.connect({}, function () {
client.subscribe("/topic/generatePdf", function (message) {
console.log(message);
$("#bnt").value(JSON.parse(message.body));
});
});
$("#bnt").click(function() {
client.send("/app/generatePdf", {}, JSON.stringify({
'type': 'foo',
'id':2
}));
});
});
</script>