我有一个带有href和下载属性的链接:
<a id="lnk" href="data:text/csv;charset=utf-8,1%2C2%2C3" download="my_file.csv">click to download</a>
当我点击它(例如在Chrome中)时,会按照假设下载csv文件“my_file.csv”。
现在我希望能够以编程方式引发此操作。所以我正在尝试使用JQuery:
$('#lnk').click();
或
$('#lnk').trigger("click");
但未下载该文件。
这是代码: http://jsbin.com/yereg/3/edit
我可以从链接中复制链接地址,然后只使用window.open:
window.open('data:text/csv;charset=utf-8,1%2C2%2C3');
但是这样我就无法设置文件名(链接由download="my_file.csv"
属性设置)。如果有办法设置文件名,这个解决方案很好。
备注:在我的情况下,应支持Chrome和Firefox。我不关心其他浏览器。
答案 0 :(得分:18)
:
点击事件仅在这一系列事件发生后触发:
当指针位于元素内时,按下鼠标按钮。 当指针位于元素内时,鼠标按钮被释放。
您可以通过
来调用JavaScript本机事件$('#lnk').get(0).click();
或更安全:
var lnk = document.getElementById('lnk');
if (lnk) {
lnk.click();
}
修改强>
出于好奇,我查看了jQuery源代码是如何完成的。事实证明,它们特意故意阻止链接上的浏览器的本机点击事件,请参阅最新jQuery版本(2.1.x)中events.js
的以下摘录,特别是注释:
click: {
[...]
// For cross-browser consistency, don't fire native .click() on links
_default: function( event ) {
return jQuery.nodeName( event.target, "a" );
}
},
答案 1 :(得分:0)
尝试使用$('#lnk')[0].click()
JS:
$('#btn1').on('click', function(){
$('#lnk')[0].click();
});