下载属性不适用于safari

时间:2017-10-11 14:22:03

标签: html macos download safari attributes

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

const o = {
    0:[{lqd: 1000, date: "2017-08-18 09:30:00"},
       {lqd: 6500, date: "2017-08-18 14:00:00"}
    ],
    1:[
        {lqd: 1000, date: "2017-08-18 09:30:00"},
        {lqd: 6500, date: "2017-08-18 14:00:00"}
    ],
    2:[
        {lqd: 1000, date: "2017-08-18 09:30:00"},
        {lqd: 6500, date: "2017-08-18 14:00:00"}
    ]
};

for (let len = Object.keys(o).length, i = len; i < len * 3; i++) {
  Object.assign(o, {[i]: JSON.parse(JSON.stringify(o[i -1]))});
}

console.log(o);

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

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

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

3 个答案:

答案 0 :(得分:11)

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

  

HTML5下载属性   锚元素的下载属性   表示链接目标是下载链接的下载链接   文件,而不是导航链接。当您单击一个链接时   下载属性,目标作为文件下载。 (可选)   download属性的值提供了建议的名称   文件。

虽然从我自己的测试中看起来似乎没有在iOS Safari 11.1中提供,这让我有些困惑。基于它们相似的版本编号,我希望它们在标准支持方面是相同的。

答案 1 :(得分:2)

try this code : 

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的工作

答案 2 :(得分:-2)

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

向下滚动到属性,您将看到HTML5仅支持DOWNLOAD属性,因为看起来您朋友的Safari版本不支持。我建议更新程序。

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

@Jarla