/** * 加载远程 script */ function getScript(url, callback) { const script = document.createElement('script'); script.src = url; script.async = 'async'; if (callback) { script.onload = callback; } document.head.appendChild(script); }
/** * 下载图片 */ function async openDownload(imgUrl, name) { const link = imgUrl; const files = link.split('.'); const type = files[files.length - 1]; // 初始化 XMLHttpRequest const x = new XMLHttpRequest(); if (['jpg', 'png', 'jpeg', 'gif'].includes(type)) { // 图片 const image = await this.getBase64Image(link); x.open('GET', image, true); } else { // 非图片 x.open('GET', link, true); } x.responseType = 'blob'; x.onload = function() { const url = window.URL.createObjectURL(x.response); const a = document.createElement('a'); a.href = url; a.download = name || ''; a.click(); }; x.send(); }, function getBase64Image(img) { return new Promise((resolve, reject) => { if (!img) { reject(new Error(null)); } const canvas = document.createElement('canvas'); const image = new Image(); image.setAttribute('crossOrigin', 'anonymous'); image.src = `${img}?v=${Math.random()}`; image.onload = () => { canvas.width = image.width; canvas.height = image.height; const ctx = canvas.getContext('2d'); ctx.drawImage(image, 0, 0, image.width, image.height); const ext = image.src .substring(image.src.lastIndexOf('.') + 1) .toLowerCase(); resolve(canvas.toDataURL(`image/${ext}`)); }; image.error = () => { reject(new Error(null)); }; }); },
/** * 姓名脱敏 */ function desensitizeName(num) { const pat = /.(?=[\u4e00-\u9fa5])/; return num.replace(pat, '*'); } /** * 手机号脱敏 */ function desensitizePhone(num) { const pat = /(\d{3})\d*(\d{4})/; return num.replace(pat, '$1****$2'); }