uni-app H5兼容性1

893 阅读1分钟

自定义组件传值为对象时 H5以下写法会报警告

props:{
    file:{
        default:{
            name:'xxx.pdf',
        },
        type:Object
    }
}
  • 正确写法 兼容小程序
file:{
    default:()=>{ name:'xxx.pdf' },
    type:[Object]
}

canvas绘制图片转base64

  • H5&APP不支持uni.getFileSystemManager() 返回的为undefined
//h5不支持 微信小程序可以
uni.getFileSystemManager().readFileSync(res.tempFilePath, 'base64');

兼容H5和APP正确写法

// #ifdef H5
    let dataURL = document.querySelector('canvas').toDataURL('image/png');
    that.$emit('getImg', dataURL.split('base64,')[1]);
    // #endif
    // #ifndef H5
    uni.canvasToTempFilePath(
        {
            canvasId: 'myCanvas',
            success: function(res) {
                    // #ifdef MP-WEIXIN
                    let tempFilePath = uni.getFileSystemManager().readFileSync(res.tempFilePath, 'base64');
                    // 在H5平台下,tempFilePath 为 base64
                    that.$emit('getImg', tempFilePath);
                    // #endif

                    // #ifdef APP || APP-PLUS
                    const path = plus.io.convertLocalFileSystemURL(res.tempFilePath); //绝对路径
                    const fileReader = new plus.io.FileReader();
                    fileReader.readAsDataURL(path);
                    fileReader.onloadend = res => {
                            //读取文件成功完成的回调函数
                            that.$emit('getImg', res.target.result.split('base64,')[1]);
                    };
                    // #endif
            },
            fail: err => {
                    console.log(err);
            }
        },
     );
    // #endif