html2canvas在截图的过程当中,若是遇到html中有跨域地址的图片,好比图片存在了别人的云上,截图的时候将不会显示图片,解决方案以下: Js部分javascript
import html2canvas from 'html2canvas' data () { return { imageUrl: 'http://xxx.example.com', // 跨域地址 screenshotImage: '' // 保存的base64地址 } }, methods: { async shareHandle () { const opts = { useCORS: true } const ele = this.$refs.screenshot const canvas = await html2canvas(this.$refs.screenshot, opts) this.screenshotImage = canvas.toDataURL('image/jpg') } } 复制代码
html代码html
<div class="share-wrap" ref="screenshot"> <img :src="imageUrl+'?'+new Date().getTime()" crossOrigin="anonymous"> </div> 复制代码
这里有几个关键的地方:java
allowTaint: true
和 useCORS: true
都是解决跨域问题的方式,不一样的是使用allowTaint
会对canvas形成污染,致使没法使用canvas.toDataURL
方法,因此这里不能使用allowTaint: true
crossOrigin="anonymous"
而且须要给imageUrl
加上随机数canvas.toDataURL('image/jpg')
是将canvas转成base64图片格式。