美文网首页技术分享
WKWebView 的一些坑

WKWebView 的一些坑

作者: 驰宝 | 来源:发表于2017-08-14 16:11 被阅读17次

    现在app大多由h5页面展示,我们使用wkwebivew代替uiwebview,减少了内存占用,但同时也有些坑,下面罗列我遇到的坑:

    1、wkwebiew cookie丢失

    在h5跳转h5时,cookie会丢失,导致登录无效。解决方法:

    - (void)webView:(WKWebView*)webView didFinishNavigation:(null_unspecifiedWKNavigation*)navigation {

    NSHTTPCookieStorage*cookieStorage = [NSHTTPCookieStoragesharedHTTPCookieStorage];

    //js函数

    NSString*JSFuncString =

    @"function setCookie(name,value,expires)\

    {\

    var oDate=new Date();\

    oDate.setDate(oDate.getDate()+expires);\

    document.cookie=name+'='+value+';expires='+oDate+';path=/'\

    }\

    function getCookie(name)\

    {\

    var arr = document.cookie.match(new RegExp('(^| )'+name+'=({FNXX==XXFN}*)(;|$)'));\

    if(arr != null) return unescape(arr[2]); return null;\

    }\

    function delCookie(name)\

    {\

    var exp = new Date();\

    exp.setTime(exp.getTime() - 1);\

    var cval=getCookie(name);\

    if(cval!=null) document.cookie= name + '='+cval+';expires='+exp.toGMTString();\

    }";

    //拼凑js字符串

    NSMutableString*JSCookieString = JSFuncString.mutableCopy;

    for(NSHTTPCookie*cookieincookieStorage.cookies) {

    NSString*excuteJSString = [NSStringstringWithFormat:@"setCookie('%@', '%@', 1);", cookie.name, cookie.value];

    [JSCookieStringappendString:excuteJSString];

    }

    //执行js

    [webViewevaluateJavaScript:JSCookieStringcompletionHandler:^(idobj,NSError*_Nullableerror) {

    NSLog(@"%@",error);

    }];

    2、白屏问题:

    当内存占用过多时,会出现白屏问题,找了好久的解决方法:尝试的方法

    1)判断webview的title是否存在,不存在重新加载:

    if(_webview.title==nil) {

    [_webviewreload];

    }

    然后加上这个方法还是会出现白屏,所以尝试下面的解决方法:

    2)判断webview body是否存在

    [webviewevaluateJavaScript:@"document.querySelector('body').innerHTML"completionHandler:^(idresult,NSError*error) {

    if(!result || ([resultisKindOfClass:[NSStringclass]] && [((NSString*)result)length] ==0)) {

    [webviewreload];

    }

    }];

    这个方法加上目前还没测出白屏。😁

    相关文章

      网友评论

        本文标题:WKWebView 的一些坑

        本文链接:https://www.haomeiwen.com/subject/rnvurxtx.html