我试图动态生成给定内容的锚点(在这种情况下,存储在Cloudinary.io上的文档和/或图像),但我存储的文档具有哈希值而不是文件名(即:c9eed62bd1534c382a3b89241b24b1ddd17b3793
代替sample.pdf
)。
这是我用来生成锚点的功能:
function download(url, download) {
if (url) {
var a = document.createElement('a');
if (a) {
a.href = url;
a.download = download || '';
a.target = '_blank';
a.click();
}
}
}
我遇到的问题是,当我执行该功能时,浏览器会为我下载该文件,但名称在href
属性而不是download
属性中。
这是我用来触发下载的事件:
$('.link').on('click', function (e) {
download($(this).data('url'), $(this).data('name'));
});
这是一个示例HTML元素,包含触发事件的数据:
<span class="link" data-url="http://res.cloudinary.com/dxsky7h00/raw/upload/v1483364241/627ec3e4afa08749ac4aff8d2917a38f586a5790" data-name="fs545554545454.xls"><i class="icon-file-o"></i>fs545554545454</span>
也许我以错误的方式理解download
元素的<a>
属性,但我认为,当指定时,它会强制浏览器下载资源而不是一方面尝试打开它另一方面,如果使用download="something"
,则会下载资源,其名称为&#39; something&#39;而不是href
属性中的内容。
这个示例函数有什么用?
编辑我目前正在Chrome 55.0.2883.87(64位)上对此进行测试,但正如this entry on caniuse.com所述,它是兼容的
答案 0 :(得分:0)
@tsh问了正确的问题。问题在于href
属性引用了外部资源,因此我们正在处理跨源引用,浏览器不允许我使用其他名称下载它。
我用本地文件测试它并且它有效,所以问题在于我的实现。无论如何,感谢所有人:)