首页 > 其他 > 详细

使用img.onload事件加载图片的兼容问题

时间:2019-07-04 22:25:23      阅读:121      评论:0      收藏:0      [点我收藏+]

平时加载图片的方法


let img = new Image();
img.onload = () => {
    ...
}
img.src = '.....'

最近使用这种方式加载base64的图片,在ipone6 plus(ios9)中,base64的图片没有加载成功,而jpg 格式的照片可以成功加载

解决方案

  • 方案一:将base64转成file对象,让服务端返回一个http的图片链接
    • 优点:无兼容性问题
    • 缺点:多一次请求,且图片加载依赖网速
  • 方案二:将base64转成objectUrl
    • 优点:无网络请求
    • 缺点:兼容性,PC端慎用

objectUrl

  • 兼容性

    技术分享图片

技术分享图片

  • 相关代码
generateImgUrl(imgUrl, isCors = true) {
        return new Promise((resolve, reject) => {
            let img = new Image(),
                objectUrl = null;
            if (isCors) {
                img.setAttribute('crossOrigin', 'anonymous');
            }
            if (imgUrl.match(/^data:(.*);base64,/) && window.URL && URL.createObjectURL) {
                objectUrl = URL.createObjectURL(Tool._convertBase64ToBlob(imgUrl));
                imgUrl = objectUrl;
            }
            img.onload = () => {
                objectUrl && URL.revokeObjectURL(objectUrl);
                resolve(img);
            };
            img.onerror = err => {
                reject(err);
            };
            img.src = imgUrl;
        });
    }

使用img.onload事件加载图片的兼容问题

原文:https://www.cnblogs.com/let423/p/11135193.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!