下载文件生成后关闭窗口

时间:2015-10-15 06:18:08

标签: javascript jquery html iframe

我有生成pdf文件的javascript代码。 为此,我有url生成pdf文件。我不希望用户看到该网址,这就是为什么我在隐藏中使用iframe加载该网址并生成下载弹出窗口。 然而它为我工作,但现在我想做的是在新标签中打开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();

如果我正在使用printWin.close();,它突然关闭该窗口而没有下载文件。对此有什么解决方案吗?

2 个答案:

答案 0 :(得分:0)

如果我可以在不使用隐藏的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();

答案 1 :(得分:0)

问题在于你拥有它的方式,printWin.close();不会等待iframe中的代码完成。您需要做的是在创建PDF时自行关闭新窗口。在新窗口的代码末尾,您可以添加:window.close();