【问题标题】:Using window.open() to download file, how to not remove the # in URL?使用 window.open() 下载文件,如何不删除 URL 中的 #?
【发布时间】:2015-08-10 15:16:00
【问题描述】:

所以我在点击元素时使用 JavaScript 下载文件,如下所示:

HTML

<p onclick="download()">Click Here</p>

JavaScript

function download(){
    window.open("file.pdf")
}

在点击元素之前,URL 中有一些#text,如下所示:folder/subfolder/index.html#text

如果文件在浏览器中打开,它会替换当前选项卡,并且当您按后退按钮返回页面时(例如使用 PDF),URL 中的任何#text 保留。但是,如果只是下载文件,则任何#text 都会被删除

我怎样才能使它不被删除,或者我怎样才能将它返回到 URL?由于该页面实际上并未重新加载,因此我无法将代码放入其中可能检测到 URL 中应该包含的 #text 内容。还有什么解决方法?

我遇到的问题是一个链接下载了一个无法在浏览器中打开的文件(不是 PDF),因此它会导致#text 消失。然后,当我点击另一个在浏览器中打开文件(PDF)的链接时,当我点击后退按钮时,#text 消失了,但它让我的程序知道要打开什么视图。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    使用window.open("file.pdf", "_blank")。这将临时打开一个新选项卡以下载文件,然后将其关闭,保留原始页面和 URL。

    【讨论】:

    • 这几乎就是它目前所做的,可以看到选项卡在准备下载时非常短暂地打开,当文件不存在时,选项卡会保持这样的状态。添加“_blank”似乎确实改变了它的功能。
    • 我认为这取决于浏览器。例如,我注意到在 Chrome 中,在新选项卡中打开 .pdf 不会开始下载(需要用户单击)。而.zip.tar.gz 将自动开始下载。
    • 它只会为 .pdf 文件打开一个新标签。
    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多