使用Javascript向单击事件添加下载功能

使用Javascript向单击事件添加下载功能,javascript,jquery,html,download,Javascript,Jquery,Html,Download,我想知道是否有可能在纯Javascript中向单击事件添加下载功能,例如,当用户单击图像时,它会自动下载。例如,我有一个图像标签,并希望它被下载点击。我不能使用download=myfile.png 有类似的吗 $('#img').on('click',function(e){ img.download="myfile.png"; }); 所有在线答案都建议添加下载=。。。进入我的标签 谢谢 您可以使用HTML5下载属性 您可以使用HTML5下载属性 也许是这样的: document

我想知道是否有可能在纯Javascript中向单击事件添加下载功能,例如,当用户单击图像时,它会自动下载。例如,我有一个图像标签,并希望它被下载点击。我不能使用download=myfile.png

有类似的吗

$('#img').on('click',function(e){
  img.download="myfile.png";
});
所有在线答案都建议添加下载=。。。进入我的标签

谢谢

您可以使用HTML5下载属性

您可以使用HTML5下载属性


也许是这样的:

document.getElementById'download'。单击;
也许是这样的:

document.getElementById'download'。单击; 您可以在单击图像时创建锚元素并使用。单击可触发对该锚的单击,即使其未附加到您的页面

如果这仍然违反了要求,那么您可能必须通过服务器端工作来实现它

window.onload=函数{ //测试用假图像 var canvas=document.createElement'canvas'; 画布宽度=300; 画布高度=200; var ctx=canvas.getContext'2d'; ctx.fillStyle='黑色'; ctx.fillRect0,02000; ctx.fillStyle=‘青色’; ctx.fillText'test',50,50; var makeImageDownloadable=函数图像,名称{ image.addEventListener'click',函数{ var a=document.createElement'a'; a、 href=image.src; //可能需要检查数据类型,或者只是先将图像写入另一个tmp画布。 a、 下载=名称+'.png'; a、 点击; }; }; var图像=新图像; image.onload=函数{ querySelector'holder'。appendChildimage; makeImageDownloadableimage'testimage'; }; image.src=canvas.toDataURL'image/png'; }; 您可以在单击图像时创建锚元素并使用。单击可触发对该锚的单击,即使其未附加到您的页面

如果这仍然违反了要求,那么您可能必须通过服务器端工作来实现它

window.onload=函数{ //测试用假图像 var canvas=document.createElement'canvas'; 画布宽度=300; 画布高度=200; var ctx=canvas.getContext'2d'; ctx.fillStyle='黑色'; ctx.fillRect0,02000; ctx.fillStyle=‘青色’; ctx.fillText'test',50,50; var makeImageDownloadable=函数图像,名称{ image.addEventListener'click',函数{ var a=document.createElement'a'; a、 href=image.src; //可能需要检查数据类型,或者只是先将图像写入另一个tmp画布。 a、 下载=名称+'.png'; a、 点击; }; }; var图像=新图像; image.onload=函数{ querySelector'holder'。appendChildimage; makeImageDownloadableimage'testimage'; }; image.src=canvas.toDataURL'image/png'; };
如果你希望这是动态的,试试这个

$("SomeElement").onclick = function(){
$("<a id='tmp' href='link' download ></a>).appendTo("body");
$("#tmp").click();
$("#tmp").remove();
}

但请记住,IE中不支持下载属性。

如果您希望此属性是动态的,请尝试此选项

$("SomeElement").onclick = function(){
$("<a id='tmp' href='link' download ></a>).appendTo("body");
$("#tmp").click();
$("#tmp").remove();
}

但请记住,IE中不支持下载属性。

@kcube我想是的,我缺少什么?@klausruprecht您没有使用HTML 5吗?如果没有,你能使用AJAX吗?我使用HTML5,但是我的img是动态创建的,而且也是从不同的页面创建的,所以我不能将属性添加到标记中。我可以用AJAX@klausruprecht即使元素是动态加载的,也可以添加download属性。更好的是,如果您可以使用AJAX,只需获得文件的下载链接,然后就可以了?整个标记是动态创建的。那还能用吗?你是说kcube建议的吗?@kcube我想是的,我遗漏了什么?@klausruprecht你没有使用HTML5吗?如果没有,你能使用AJAX吗?我使用HTML5,但是我的img是动态创建的,而且也是从不同的页面创建的,所以我不能将属性添加到标记中。我可以用AJAX@klausruprecht即使元素是动态加载的,也可以添加download属性。更好的是,如果您可以使用AJAX,只需获得文件的下载链接,然后就可以了?整个标记是动态创建的。那还能用吗?你是说kcube的建议吗?谢谢,我不太明白,所以我点击了元素,这就在img中创建了属性?你的意思是这样的吗?如果你不想在你的页面上有一个静态的a标记,这将在元素的点击事件后将其附加到主体上,在一个标记上触发点击事件,该事件将启动下载,然后从DOM中删除该元素。但是如果你在IE中,这对你没有帮助。谢谢,我不太明白,所以我点击元素,这会在img中创建属性吗?你的意思是这样的吗?如果你不想在你的页面上有一个静态的a标记,这将在元素的点击事件后将其附加到主体上,在一个标记上触发点击事件,该事件将启动下载,然后从DOM中删除该元素。但如果你在IE中,这将毫无帮助。