4***@qq.com
4***@qq.com
  • 发布:2016-12-22 10:09
  • 更新:2020-01-11 22:43
  • 阅读:4291

kernel: 'WKWebview' 真机页面上不显示本地图片

分类:MUI

请教一下,官方feeddback例子,如果我把kernel设置成WKWebview iphone6s真机上就显示不了从图库中选的图片,模拟器却可以显示,不知道什么情况?

            plus.gallery.pick(function(e) {  
                console.log("event:" + e);  
                var name = e.substr(e.lastIndexOf('/') + 1);  
                console.log("name:" + name);  

                plus.zip.compressImage({  
                    src: e,  
                    dst: '_doc/' + name,  
                    overwrite: true,  
                    quality: 50  
                }, function(zip) {  
                    size += zip.size  
                    console.log("filesize:" + zip.size + ",totalsize:" + size);  
                    if(size > (10 * 1024 * 1024)) {  
                        return mui.toast('文件超大,请重新选择~');  
                    }  
                    if(!self.parentNode.classList.contains('space')) { //已有图片  
                        feedback.files.splice(index - 1, 1, {  
                            name: "images" + index,  
                            path: e  
                        });  
                    } else { //加号  
                        placeholder.classList.remove('space');  
                        feedback.addFile(zip.target);  
                        feedback.newPlaceholder();  
                    }  
                    up.classList.remove('image-up');  
                    placeholder.style.backgroundImage = 'url(' + zip.target + ')';  
                }, function(zipe) {  
                    mui.toast('压缩失败!')  
                });  

            }, function(e) {  
                mui.toast(e.message);  
            }, {});
2016-12-22 10:09 负责人:无 分享
已邀请:
猫猫猫猫

猫猫猫猫 - 用户已离线

WKWebview 有着严格的安全机制,不仅有跨域限制,本地资源的加载也有严格的限制,不是随便一个目录内的资源都可以加载的。具体表现在iOS10、iOS9、iOS8又各有区别,详细资料不再赘述请自行搜索。

距离您98米

距离您98米 - 哈哈

怎么解决,我也遇到这个问题

  • 猫猫猫猫

    转换成http的路径,h5+环境带一个静态服务器

    2017-12-21 15:04

  • 1***@qq.com

    回复 猫猫猫猫: 怎么转换的啊

    2019-09-18 17:21

  • 鹏少

    你好,这个问题你解决了吗?

    2020-01-06 20:42

鹏少

鹏少

该问题怎么解决,我也遇到这个问题!求帮助!

  • 1***@163.com

    我是把文件路径转成base64 放到src里的

    2020-01-06 21:51

  • 鹏少

    回复 1***@163.com: 你的文件路径是本地路径吗?

    2020-01-07 09:37

  • 1***@163.com

    回复 鹏少: ```

    // save

    const handleTakePhoto = useCallback(() => (() => {

    const {captureImage} = window.plus.camera.getCamera();

    setItem('needIgnoreResume', JSON.stringify(true));

    // console.log(getItem('needIgnoreResume'));

    captureImage(res => onTakePhoto(res), err => onTakePhoto(err), {

    filename: '_doc/cache/camera/'

    });

    })(), [onTakePhoto, setItem]);


    // base64

    useEffect(() => {

    let b;

    if(type === 1) {

    b = new window.plus.nativeObj.Bitmap(new Date().toISOString(), content);

    b.load(content, () => {

    const src = b.toBase64Data();

    setRemoteImgURL(src);

    });

    }


    return () => {  
    if(b && b.clear) b.clear()
    };

    }, [type, content]);


    2020-01-07 09:55

  • 鹏少

    回复 1***@163.com: 谢谢兄弟,我这个跟你的有点不一样,我这里是混合开发。从原生APP哪里获取的文件路径!图片在原生的library里面存着!

    2020-01-07 10:09

  • 1***@163.com

    回复 鹏少: 转base64要是碰到大文件还是要一会的 你要是知道wkwebview这个bug怎么解决麻烦告诉我一声哈 谢谢

    2020-01-07 10:15

  • 鹏少

    回复 1***@163.com: 好的

    2020-01-07 10:17

  • 1***@163.com

    回复 鹏少: 兄弟 你试试


      useEffect(() => {  
    if(type === 1) {
    window.plus.io.resolveLocalFileSystemURL(content, e => {
    let result;
    if(window.plus.os.name === 'iOS') {
    result = e.__remoteURL__;
    }else {
    result = e.fileSystem.root.__remoteURL__;
    }
    setRemoteImgURL(result);
    });
    }
    }, [type, content]);

    2020-01-07 11:49

p***@sina.com

p***@sina.com

wkwebview,跨域问题,读取本地资源,也要用plus.net

该问题目前已经被锁定, 无法添加新回复