【问题标题】:Download attribute not working in safari下载属性在 Safari 中不起作用
【发布时间】:2018-03-23 06:38:10
【问题描述】:

我在链接中使用了下载属性:

   <a style="color:white" download="myimage" href="images/myimage.jpg">Download image</a>

它在几乎所有浏览器中都运行良好。这意味着,如果我单击链接,图像会自动下载。我在我的 Mac 上的 safari 10.1.2 中对其进行了测试,它工作正常。

但在使用 safari 10.0.3 的朋友 mac 上,它无法正常工作。他是说图像只是在新窗口中打开而不是下载。

为什么会发生这种情况,我该怎么做才能让它在任何地方都能正常工作?

【问题讨论】:

  • @Jarla 你看到我的回答了吗?

标签: html macos download safari attributes


【解决方案1】:

试试这个代码:

var element = document.createElement('a');
            var clearUrl = base64.replace(/^data:image\/\w+;base64,/, '');

            // element.setAttribute('href', 'data:attachment/image' + base64);
            element.setAttribute('href', 'data:application/octet-stream;base64,' + encodeURIComponent(clearUrl));
            element.setAttribute('download', 'filename.jpg');
            document.body.appendChild(element);
            element.click();
            document.body.removeChild(element)

这在 safari 版本 10.0.3 中对我有用

【讨论】:

  • 适用于 safari 12,但没有文件名和文件类型
  • 我也面临这个问题,很抱歉我无法在 safari 中检索文件名和扩展名。
【解决方案2】:

根据https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_1.html,它是在Safari 10.1中添加的:

HTML5 下载属性 锚元素的下载属性 表示链接目标是下载链接 文件,而不是导航链接。当您单击带有 下载属性,目标被下载为文件。可选地, 下载属性的值提供了建议的名称 文件。

从我自己的测试来看,它似乎在 iOS Safari 11.1 中不可用,这让我有点困惑。基于相似的版本编号,我希望它们在标准支持方面是相同的。

【讨论】:

  • Mobile safari 还没发货:caniuse.com/#feat=download
  • 请注意,在 Safari 中指定 target 属性似乎会覆盖 download 属性(在 Chrome、Firefox 或 Opera 中似乎不是这种情况)。
  • 感谢@john-hascall,您的评论解决了我的问题。
  • 我正在使用 Safari 12.3.1,但它仍然无法正常工作,但根据上面评论中发布的 caniuse 表,处于测试阶段并将在几个月内发布的 13 将支持它.
【解决方案3】:

请看https://www.w3schools.com/TagS/tag_a.asp

向下滚动到属性,您将看到仅 HTML5 支持 DOWNLOAD 属性,而您朋友的 Safari 版本似乎不支持该属性。我建议更新程序。

或者,您可以右键单击图像,然后单击另存为...,然后以这种方式下载。

@贾拉

【讨论】:

  • 强制下载图片有什么替代方案吗?
  • @mayurkukadiya 如果您有权访问提供图像的服务器,您可以将标头 Content-Disposition 设置为 attachment
猜你喜欢
  • 2018-03-13
  • 2015-01-22
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2015-08-07
  • 2019-04-03
相关资源
最近更新 更多