1. html2canvas
import html2canvas from 'html2canvas'import { Toast } from 'vant'export const doCut = function (shareDom, state) { console.log(shareDom.offsetHeight) html2canvas(shareDom, { dpi: window.devicePixelRatio * 2, scale: 1, allowTaint: true, useCORS: true, height: shareDom.offsetHeight, width: shareDom.offsetWidth, scrollY: 0, scrollX: 0 }).then((canvas) => { const img = new Image() img.src = canvas.toDataURL('png') img.setAttribute('crossOrigin', 'anonymous') img.onload = function () { const imgUrl = canvas.toDataURL('image/png') // console.log(imgUrl) state.imageUrl = imgUrl Toast('海报已生成,长按后分享给好友') // saveFile(imgUrl, 'test.png') // 根据生成的图片地址imgUrl(base64)进行后续保存操作 } })}// 保存图片// const saveFile = function (data, filename) {// const saveLink = document.createElementNS(// 'http://www.w3.org/1999/xhtml',// 'a'// )// saveLink.href = data// saveLink.download = filename// var event = document.createEvent('MouseEvents')// event.initMouseEvent(// 'click',// true,// false,// window,// 0,// 0,// 0,// 0,// 0,// false,// false,// false,// false,// 0,// null// )// saveLink.dispatchEvent(event)// }
2. cookie
/* * @Description: * @Author: Harry * @Date: 2021-12-02 22:33:52 * @Url: https://u.mr90.top * @github: https://github.com/rr210 * @LastEditTime: 2021-12-18 20:53:35 * @LastEditors: Harry */const setCookie = function (name, value) { const expdate = new Date() // 初始化时间 expdate.setTime(expdate.getTime() + 30 * 60 * 1000) // 时间单位毫秒 document.cookie = name + '=' + escape(value) + ';expires=' + expdate.toUTCString() + ';path=/' // document.cookie = name + "=" + value + ";path=/"; // 时间默认为当前会话可以不要,但路径要填写,因为JS的默认路径是当前页,如果不填,此cookie只在当前页面生效!}const getCookie = function (a) { // console.log(a) let d const b = document.cookie const c = b.split(';') // console.log(c); // console.log(escape('YWRtaW4=')); for (let e = 0; e < c.length; e++) { const f = c[e].split('=') if (a === f[0].toString().trim()) { d = f[1] break } // eslint-disable-next-line no-void } if (void 0 === d || d == null) { return '' } else { const g = unescape(d.trim()) return g }}const delCookie = function (a) { const b = new Date(0).toUTCString() document.cookie = a + '=;expires=' + b + ';path=/'}export default { setCookie, getCookie, delCookie}
3. Base64
/*** * @Description: * @Author: Harry * @Date: 2021-12-03 20:01:23 * @Url: https://u.mr90.top * @github: https://github.com/rr210 * @LastEditTime: 2021-12-27 17:51:06 * @LastEditors: Harry */class Base64 { _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; // eslint-disable-next-line no-useless-constructor constructor() {} encode = (input) => { var output = '' var chr1, chr2, chr3, enc1, enc2, enc3, enc4 var i = 0 input = this._utf8_encode(input) while (i < input.length) { chr1 = input.charCodeAt(i++) chr2 = input.charCodeAt(i++) chr3 = input.charCodeAt(i++) enc1 = chr1 >> 2 enc2 = ((chr1 & 3) << 4) | (chr2 >> 4) enc3 = ((chr2 & 15) << 2) | (chr3 >> 6) enc4 = chr3 & 63 if (isNaN(chr2)) { enc3 = enc4 = 64 } else if (isNaN(chr3)) { enc4 = 64 } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4) } return output } decode = (input) => { var output = '' var chr1, chr2, chr3 var enc1, enc2, enc3, enc4 var i = 0 // eslint-disable-next-line no-useless-escape input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '') while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)) enc2 = this._keyStr.indexOf(input.charAt(i++)) enc3 = this._keyStr.indexOf(input.charAt(i++)) enc4 = this._keyStr.indexOf(input.charAt(i++)) chr1 = (enc1 << 2) | (enc2 >> 4) chr2 = ((enc2 & 15) << 4) | (enc3 >> 2) chr3 = ((enc3 & 3) << 6) | enc4 output = output + String.fromCharCode(chr1) if (enc3 !== 64) { output = output + String.fromCharCode(chr2) } if (enc4 !== 64) { output = output + String.fromCharCode(chr3) } } output = this._utf8_decode(output) return output } // eslint-disable-next-line camelcase _utf8_encode = function (string) { string = string.replace(/\r\n/g, '\n') var utftext = '' for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n) if (c < 128) { utftext += String.fromCharCode(c) } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192) utftext += String.fromCharCode((c & 63) | 128) } else { utftext += String.fromCharCode((c >> 12) | 224) utftext += String.fromCharCode(((c >> 6) & 63) | 128) utftext += String.fromCharCode((c & 63) | 128) } } return utftext } // eslint-disable-next-line camelcase _utf8_decode = function (utftext) { var string = '' var i = 0 let c = 0 let c2 = 0 // console.log(object); while (i < utftext.length) { c = utftext.charCodeAt(i) if (c < 128) { string += String.fromCharCode(c) i++ } else if ((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i + 1) string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)) i += 2 } else { c2 = utftext.charCodeAt(i + 1) const c3 = utftext.charCodeAt(i + 2) string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)) i += 3 } } return string }}export default Base64