为什么JQuery不能设置锚“下载”属性值?

时间:2015-11-13 06:50:38

标签: javascript jquery html download anchor

我正在尝试动态设置锚点的下载属性的值。这应该是下载文件的文件名。但是,文件名默认为其原始值,而不是我试图给它的值。

编辑:有人指出,下载属性值IS实际上在DOM中发生了变化。但是,未正确分配下载文件的文件名。

编辑:动态设置值似乎不是问题。即使是硬编码,文件名也没有设置。

<a href="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" download="image.png">click</a>

http://jsfiddle.net/abalter/2wz5zs7r/

HTML:

<button>Set url and download name for anchor</button>
<a href="" download="">Download Google logo</a>

使用Javascript:

var googleLogoURL = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"; 
$('button').on('click', function(){
    alert("url and filename set");
    $('a').prop({
        'href': googleLogoURL,
        'download': "google-logo.png"
    });
});

1 个答案:

答案 0 :(得分:1)

它不起作用,因为您运行JS的网页可能不会托管在https://www.google.com上。

来自the HTML 5 spec

  

在跨源情境中,必须将download属性与Content-Disposition HTTP标头结合使用,特别是与附件处置类型相结合,以避免用户被警告可能是恶意活动。 (这是为了防止用户在没有完全理解的情况下下载敏感的个人或机密信息。)

来自MDN

  

此属性仅适用于具有相同来源的资源的链接。