WKWebView 加载沙盒图片问题异常

2020-03-31  本文已影响0人  Cocoa_Coder

记录一次异常,仅供参考

出现异常的代码如下,WKWebView 通过 loadHTMLString:baseURL: 方法加载 其中baseURL参数地址为tmp/editor文件夹,包含了js,css文件


<div id="article_content" contenteditable="true" autofocus="autofocus">

    <br>

        <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//EBC78615-07F1-4CEB-865E-19FE54F81AC1.jpg" alt="EBC78615-            07F1-4CEB-865E-19FE54F81AC1" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//A869DB48-5183-473C-A036-5252FA092B1B.jpg" alt="A869DB48-5183-473C-A036-5252FA092B1B" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//7E632178-4084-4F53-AEE8-53848AE267B0.jpg" alt="7E632178-4084-4F53-AEE8-53848AE267B0" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//F26D0FCE-3F5C-47BE-A808-09C65A3DD51C.jpg" alt="F26D0FCE-3F5C-47BE-A808-09C65A3DD51C" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//C9068776-DCAA-473E-9E06-6C96A8907990.jpg" alt="C9068776-DCAA-473E-9E06-6C96A8907990" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//9BCFF980-4DF5-46C2-A74A-D6E606F62D97.jpg" alt="9BCFF980-4DF5-46C2-A74A-D6E606F62D97" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//433FC88B-BE44-4C42-9178-6D60AB89BF9D.jpg" alt="433FC88B-BE44-4C42-9178-6D60AB89BF9D" style="width:100%;">

    <br>

    <img src="file:///private/var/mobile/Containers/Data/Application/64E9BAC5-ED7F-4D4C-A042-B6FC3A3376F2/tmp//A353D3D6-F1D7-4075-A7E0-17640053DD9E.jpg" alt="A353D3D6-F1D7-4075-A7E0-17640053DD9E" style="width:100%;">

    <br>

</div>

按理说不应该出现问题的,查看了下手机下的tmp文件夹,图片都有,就是加载不到,最后是这个原因


OC代码:

photos是图片选择器代理返回的所选图片

[photos enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(UIImage * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

        if(obj) {

            CGSizetargetSize = obj.size;

            if(obj.size.width>600)

            {

                targetSize =CGSizeMake(600, obj.size.height/obj.size.width*600);

            }

            UIGraphicsBeginImageContext(targetSize);

            [objdrawInRect:CGRectMake(0,0,targetSize.width,targetSize.height)];

            UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

            UIGraphicsEndImageContext();



            NSString*imageID = [[NSUUIDUUID]UUIDString];

            NSString*homePath =NSTemporaryDirectory();

            homePath = [homePathstringByAppendingString:[NSStringstringWithFormat:@"/%@.jpg",imageID]];

            NSData*imageData =UIImageJPEGRepresentation(scaledImage,1.0);

            if([imageDatawriteToFile:homePathatomically:YES]) {

//                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

//                    dispatch_async(dispatch_get_main_queue(), ^{

                        [self.editorView insertImageUrl:[[NSURLfileURLWithPath:homePath]absoluteString]alt:imageID];//插入图片

//                    });

//                });

            }

        }

    }];

//插入图片

- (void)insertImageUrl:(NSString*)imageUrlalt:(NSString*)alt {

    NSString*trigger = [NSStringstringWithFormat:@"RE.insertImage(\"%@\", \"%@\");", imageUrl, alt];

    [self evaluateJavaScript:trigger completionHandler:nil];

}



RE.insertImage =function(url, alt) {

varhtml = 'img H5代码';

document.execCommand('insertHTML',false, html);

}

上边这段代码执行在了主线程,看注释掉的那一块

猜测和浏览器异步加载图片有关,有明白的还请指教一二.

上一篇下一篇

猜你喜欢

热点阅读