使用html2canvas插件,先将html转化为canvas,再将canvas转为blob
const treeContainnerElem = document.getElementById('treeContent')
// 控制最大宽度防止右边样式缺失
let tempElemWidth = treeContainnerElem.style.width.slice(0, -2)
treeContainnerElem.style.top = 0
treeContainnerElem.style.left = 0
let scale = tempElemWidth > allowMaxWidth ? allowMaxWidth / tempElemWidth : 1
this.$nextTick(() => {
html2canvas(treeContainnerElem, {
useCORS: true, // 允许CORS跨域
scale: scale
}).then(canvas => {
const downloadName = this.downloadName + '.jpg'
canvas.toBlob(function (blob) {
const eleLink = document.createElement('a')
eleLink.download = downloadName
eleLink.style.display = 'none'
eleLink.href = URL.createObjectURL(blob) // 字符内容转变成blob地址
document.body.appendChild(eleLink) // 触发点击
eleLink.click()
document.body.removeChild(eleLink) // 然后移除
}, 'image/png', 1)
// treeContainnerElem.removeChild(tempElem)
this.downloadLoading = false
})
.catch(() => {
this.downloadLoading = false
})
})
},