本篇文章介绍利用canvas实现图片下载功能来实现浏览器兼容问题。 前言:项目中需要实现图片下载功能,第一个想到的是使用a标签的download属性来实现,但是在不同浏览器下测试会发现,有的浏览器无效,点击后直接预览图片。 所以,上网找到了另外一种兼容不同
本篇文章介绍利用canvas实现图片下载功能来实现浏览器兼容问题。 前言:项目中需要实现图片下载功能,第一个想到的是使用a标签的download属性来实现,但是在不同浏览器下测试会发现,有的浏览器无效,点击后直接预览图片。 所以,上网找到了另外一种兼容不同浏览器的图片下载的方法,那就是利用canvas来处理图片,实现下载; 1.项目中点击事件绑定:
2.点击事件中操作:
3.this.convertUrlToBase64(url)就是利用canvas和toDataURL把图片转成base64格式并返回
其中:img.crossOrigin = 'Anonymous'是前端对图片的跨域处理; 4.this.convertBase64UrlToBlob(base64)是将图片base64流文件转成blob文件
5.getBrowser()用来判断浏览器,解决浏览器兼容性问题:
6.如果是IE或者Edge浏览器,可以直接使用window.navigator.msSaveBlob(blob, name)完成下载; 声明:由于ios系统有安全性限制,以上方法在ios上无效; 以上就是记录项目中用到的图片下载,浏览器兼容的问题,涉及到的base64和blob的知识点和原理还不是很清晰,有时间一定要研究一下,整个方法,亲测有效;欢迎测用,与意见反馈。 |
2021-10-12
2021-05-12
2020-05-01
2018-01-16
2019-07-09