【发布时间】:2018-06-29 05:17:34
【问题描述】:
问题: 单击下载内容的链接后,所有其他具有 target="_blank" 且没有下载属性的链接在单击时下载而不是在新标签中打开。
浏览器: Safari 11.0.2
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<h3>Instructions</h3>
<ul>
<li>Click <a href='sample.txt' target='_blank'>ME</a> (download NOT present) to see page load in new tab then come back to this page</li>
<li>Click <a href='sample.txt' download='sample.txt'>ME</a> (download PRESENT) to see it downloaded</li>
<li>Click <a href='sample.txt' target='_blank'>ME</a> (download NOT present). Safari forces this link to download</li>
</ul>
</body>
</html>
代码示例: https://embed.plnkr.co/IscC6LTTmpEbAMLrxyYJ/
复制:
- 点击带有下载属性的链接
- 下载后点击同一页面上的 target="_blank" 链接,会看到它被强制下载,而不是在新标签页中打开。
更新: 我更新了这个问题,希望能更好地解释正在发生的事情。我找到了一种解决方法,但是如果我将链接更改为 _self 而不是 _blank,那么它们在下载后会正常工作。
【问题讨论】:
-
虽然这方面的赏金可以防止关闭或标记投票,但我认为这篇文章不符合 SO 问题指南。不清楚在问什么,我不确定这个问题是否属于这个网站
-
我认为这可能是一个“激进的”缓存问题(可能是缓存 HTTP 响应标头)。但我没有 Safari 可供测试。您是否尝试为每个
href提供一个查询参数来排除这种情况?例如href='sample.txt?newtab'和href='sample.txt?download'。如果两个 URL 有不同的查询字符串,服务器会忽略查询字符串,但浏览器会认为它们是不同的资源并分别缓存。
标签: html hyperlink download safari