触发从javascript自动下载不适用于页面加载

时间:2014-03-02 08:36:45

标签: javascript jquery

我使用了链接的下载属性来下载文件。但是,当我从另一个方法触发click事件时,它不会下载该文件。为什么会这样?我已检查是否触发了click事件。这是我对jsfiddle的测试 - http://jsfiddle.net/6Fkb5/1/

<a href="#" download="https://www.dropbox.com/s/shd31hvnsn0fd0v/Getting%20Started.pdf" id="testdownload">Test Download</a>

var count=0;
$('#testdownload').on('click', function(){
    count++;
    $('#log').append('<li>Click triggered ' + count + ' times</li>');
});


$('#testdownload').trigger('click');

2 个答案:

答案 0 :(得分:8)

请改为尝试:

$('#testdownload').get(0).click();

编辑:只是为了澄清这将触发本机点击事件而不是jQuery的。

答案 1 :(得分:1)

不行......

即使你推迟它并等待DOM准备就绪:

var count=0;

$(function(){
  $('#testdownload').click(function(){
     count++;
     $('#log').append('<li>Click triggered ' + count + ' times</li>');  
  });

setTimeout(function(){ $('#testdownload').trigger('click'); },3000);

});

原因是 SECURITY 协议......浏览器不允许脚本仅通过用户点击触发下载请求。

修改

实际上CHROME会支持$('#testdownload').get(0).click();,但IE会阻止你的脚本。

触发下载的正确方法(将在IE以外的大多数浏览器中使用)是使用iframe

<iframe width="1px" height="1px" frameborder="0" src="{File location}"></iframe>