javaScript解决手机浏览器下载为图片之后,图片漆黑无法保存的问题

pc端能正常下载图片并查看

手机移动端下载的图片全是黑色的并且无法保存,这个问题可能与移动浏览器的安全策略有关

解决办法:使用Blob对象和createObjectURL方法来创建一个临时URL,然后将其赋给链接的href属性下载:

javascript 复制代码
        // 转blob函数
        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 });
        }           

         // 使用html2canvas将 HTML 元素转换为 Canvas
            html2canvas(document.getElementById("myElementId"), {
                useCORS: true
            }).then(canvas => {
                // 获取Canvas的图像数据
                const imgData = canvas.toDataURL('image/png');
                const blob = dataURLtoBlob(imgData);
                // 创建一个链接元素
                var a = document.createElement('a');
                // 将数据URL设置为链接的href属性
                a.href = window.URL.createObjectURL(blob);
                // 设置下载的文件名
                a.download = '参观留念.png';
                // 模拟点击这个链接,触发下载
                a.click();
                // 释放Blob URL
                window.URL.revokeObjectURL(a.href);
            });
相关推荐
没有鸡汤吃不下饭28 分钟前
前端【数据类型】 No.1 Javascript的数据类型与区别
前端·javascript·面试
码流之上30 分钟前
【一看就会一写就废 指间算法】设计电子表格 —— 哈希表、字符串处理
javascript·算法
Asort3 小时前
JavaScript 从零开始(七):函数编程入门——从定义到可重用代码的完整指南
前端·javascript
真夜3 小时前
关于rngh手势与Slider组件手势与事件冲突解决问题记录
android·javascript·app
艾小码3 小时前
用了这么久React,你真的搞懂useEffect了吗?
前端·javascript·react.js
干就完了13 小时前
js对象常用方法都在这,使用时想不到?不存在的
前端·javascript
艾小码3 小时前
还在硬邦邦跳转页面?Vue这3招让应用丝滑如德芙!
前端·javascript·vue.js
子兮曰3 小时前
🚀前端依赖配置避坑指南:深度解析package.json中devDependencies的常见误解
前端·javascript·npm
forever_Mamba4 小时前
实现一个高性能倒计时:从踩坑到最佳实践
前端·javascript
小帆聊前端4 小时前
JS 原型链深度解读:从混乱到通透,掌握 90% 前端面试核心
javascript