【问题标题】:Launch download in the same tab without opening new tab or window in Javascript在同一选项卡中启动下载,而无需在 Javascript 中打开新选项卡或窗口
【发布时间】:2012-09-04 03:17:11
【问题描述】:

我正在使用这个 javascript 函数来启动下载

function startDownload(url) {
   window.open(url, 'Download');
}

它有效,但我想阻止任何新标签或新窗口启动,谢谢。

【问题讨论】:

    标签: javascript download


    【解决方案1】:
    function startDownload(url) {
    
        window.location.href = url;
    }
    

    这将在同一页面中开始下载,就像您单击除_self 之外没有任何目标的链接时一样。

    要强制下载文件,请确保发送正确的标题:

    Content-Disposition: attachment; filename="mypdf.pdf";
    

    这将确保文件不会显示在浏览器中而不是被下载。在save as 对话框中将文件名部分替换为您想要的默认文件名。

    【讨论】:

    • 对不起,如果这是一个愚蠢的问题,但你把 Content-Disposition: attachment;文件名="mypdf.pdf";?
    • @Marcel 这可能为时已晚,但标头必须在目标 url 处设置,并且不能由 Javascript 设置。见:stackoverflow.com/a/4326141/810794
    • @Marcel ,你把它放在服务器的响应中。这是java代码:Response.ok(fileContent, "application/octet-stream").header("Content-disposition", "attachment; filename=mypdf.pdf").build();
    • @vanduc1102 感谢您提供代码。这个问题我想了很久。
    【解决方案2】:

    window.open 将打开一个新窗口\选项卡(取决于用户偏好)...仅下载文件使用

    window.location.href = url;
    

    如果url返回一个可下载的文件而不是一个网页,你可以使用它

    【讨论】:

    • 我仍然有 Internet Explorer 的问题,如果我有一个 .pdf 文件,它会打开它并且我的浏览器上有未加密的文件。对于 chrome 和 firefox 来说效果很好。
    • 您从哪里提供 PDF?与 PDF 一起发送的 MIME 类型是什么? IE 显示什么?
    • 这就是我在 IE 中启动下载时得到的结果 ›É"¨36k.yš6¢Š(« ä÷§äš Ôø;}êÌ$'ÍK„¯4QEóH1Ò‡$Å"ä¶ *5ÞÒyŸéQEúŒœR,¯Zšá8â¤q'EQQàŽ¦ž¤æšsšQ'TÆàj~Þz(¢ŠÕÒîÌR)ÏC]ŕȕ†é^qQ±].....
    • 顺便说一下我用的是HttpHandler
    【解决方案3】:

    带有“下载”属性的 HTML5 解决方案

    <a href="/images/myw3schoolsimage.jpg" download>
    

    https://www.w3schools.com/tags/att_a_download.asp

    【讨论】:

    • 在使用这个解决方案之前一定要看看这个caniuse.com/#feat=download
    • Edge 版本 12、IE、Safari 10(及更早版本)或 Opera 版本 12(及更早版本)不支持下载属性
    • 另外,由于它是一个启动下载的javascript函数,我认为创建一个链接,隐藏它然后发送一个点击事件对于一个单行来说是很多工作javascript...
    【解决方案4】:
    <a target="_parent" href="link"></a>
    
    • _blank - URL 被加载到新窗口中。这是默认设置
    • _parent - URL 被加载到父框架中
    • _self - URL 替换当前页面
    • _top - URL 替换任何可能加载的框架集 name - 窗口的名称

    【讨论】:

    猜你喜欢
    • 2011-10-29
    • 2010-09-12
    • 1970-01-01
    • 2011-03-17
    • 2019-01-09
    • 2013-11-11
    相关资源
    最近更新 更多