解决方案为三个地方,三个地方缺一不可:
1、html2canvas.js源码中修改两个地方:(如果是Vue项目在:node_modules—html2canvas—dist—html2canvas.js)
case 2:Logger.getInstance(this.id).debug("Added image " + key.substring(0, 256));return [4 /*yield*/, new Promise(function (resolve, reject) {var img = new Image();img.onload = function () { return resolve(img); };img.onerror = reject;//ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymousif (isInlineBase64Image(src) || useCORS) {// img.crossOrigin = 'anonymous';img.crossOrigin = ''; // 第一个修改的地方}// img.src = src;// img.src = src; // !!!第二个修改的地方if(src.indexOf('data:image')>-1){ // 图片地址后加时间 base64图片不变// base64 图片操作img.src = src;}else{//path 图片操作img.src = src+"?"+new Date().getTime();}if (plete === true) {
上面两个地方修改之后还是不可以的,还有最后一步:
html2canvas(this.$refs.imageTofile, {backgroundColor: null,logging: true,useCORS: true // 第三步添加的地方}).then((canvas) => {。。。})
好了 大功告成了!耗费我两个小时的时间百度加尝试得到的结果,如果对你有用请点赞呦
提示:如果小伙伴们用的是火狐浏览器,应该只设置最后一个属性就可以了,但是其他浏览器就不能用哦
如果觉得《html2canvas截图时 不能使用跨域图片的解决方案》对你有帮助,请点赞、收藏,并留下你的观点哦!