我在链接中使用了下载属性:
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上,它无法正常工作。他说图像只是在新窗口中打开而不是下载。
为什么会发生这种情况,我该怎么做才能让它在任何地方都有效?
答案 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