我使用了链接的下载属性来下载文件。但是,当我从另一个方法触发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');
答案 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>