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的代码将运行,只有到那时,窗口才会关闭,否则新窗口将无法运行您的代码。