點(diǎn)擊canvas 元素執(zhí)行 saveQRcode 函數(shù)
html
<canvas ref="canvas" @click="saveQRcode"></canvas>
js
import saveQRcode from "@/utils/saveQRcode"
saveQRcode() {
var oCanvas = this.$refs.canvas;
// 保存 oCanvas 到本地
saveQRcode(oCanvas.toDataURL(), new Date());
},
saveQRcode.js
var saveQRcode = function (base64, name) {
downloadFileByBase64(base64, name)
}
function downloadFile(url, name = new Date()) {
var a = document.createElement("a");
a.setAttribute("href", url);
a.setAttribute("download", name);
a.setAttribute("target", "_blank");
let clickEvent = document.createEvent("MouseEvents");
clickEvent.initEvent("click", true, true);
a.dispatchEvent(clickEvent);
}
function downloadFileByBase64(base64, name) {
var myBlob = dataURLtoBlob(base64);
var myUrl = URL.createObjectURL(myBlob);
downloadFile(myUrl, name);
}
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
}
export default saveQRcode