Javascript 下载文件生成后关闭窗口
我有Javascript 下载文件生成后关闭窗口,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,我有javascript生成pdf文件的代码。 为此,我有url,它生成pdf文件。我不想让用户看到那个url,这就是为什么我在hidden中使用iframe来加载那个url并生成下载弹出窗口。 然而,它对我来说是可行的,但现在我想做的是在新选项卡中打开iframe内容,等待下载弹出窗口生成,然后关闭该窗口 看看我的javascript var iframe; var url="test.com?file=download"; iframe="<iframe src='"+url+"' s
javascript
生成pdf文件的代码。
为此,我有url
,它生成pdf文件。我不想让用户看到那个url,这就是为什么我在hidden中使用iframe来加载那个url并生成下载弹出窗口。
然而,它对我来说是可行的,但现在我想做的是在新选项卡中打开iframe内容,等待下载弹出窗口生成,然后关闭该窗口
看看我的javascript
var iframe;
var url="test.com?file=download";
iframe="<iframe src='"+url+"' style='visibility:hidden' >";
var html="<html>";
html+="<head>";
html+="</head>";
html+="<body>";
html+= iframe;
html+="</body>";
html+="</html>";
var printWin = window.open('','_blank','left=0,top=0,fullscreen,toolbar=0,scrollbars=1,status=0');
printWin.document.write(html);
printWin.document.close();
printWin.focus();
var-iframe;
var url=“test.com?file=download”;
iframe=“”;
var html=“”;
html+=“”;
html+=“”;
html+=“”;
html+=iframe;
html+=“”;
html+=“”;
var printWin=window.open(“”,“”“blank”,“left=0,top=0,全屏,工具栏=0,滚动条=1,状态=0’);
printWin.document.write(html);
printWin.document.close();
printWin.focus();
如果我使用的是
printWin.close()代码>它会在没有下载文件的情况下突然关闭该窗口。有什么解决方案吗?如果我可以建议一种替代方案,而不使用隐藏的iFrame和打开/关闭选项卡。在HTML5中,您可以在名为download
的链接上使用一个属性。使用纯JS的示例代码如下:
// Select your download button
var btn = document.getElementById('DOWNLOAD-BTN-ID');
// The url to your PDF,
// probably the result of the code you have now running in your iframe.
btn.href = url;
// Name your file and add the .pdf extension.
btn.download = 'FILENAME.pdf';
当用户单击该按钮时,pdf将在不离开页面的情况下下载
如果您需要在运行时触发下载,您可以添加一个额外的行,就像用户单击下载按钮一样,其结果是在您运行函数时下载PDF
btn.click();
问题是,您使用它的方式是,printWin.close()
不会等待iframe中的代码完成。您需要做的是在创建PDF后自动关闭新窗口。在新窗口的代码末尾,可以添加:window.close()代码>文件太大,因此生成需要一些时间,尚未生成的文件将下载。当url触发时,将处理文件生成。所以用户在生成文件时必须等待。意味着用户必须等待。这就是为什么我要在新标签页中打开它。所以无需等待用户生成pdf。足够公平:)忽略我的第一个答案。让我再添加一个来解决您的问题。您的意思是我需要在新窗口中添加脚本标记吗?就是这样!生成pdf的代码将运行,只有到那时,窗口才会关闭,否则新窗口将无法运行您的代码。