WKWebView小记

Posted FarmGuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WKWebView小记相关的知识,希望对你有一定的参考价值。

1 额外的进程

WKWebView有额外的2个进程,Networking和Render。所以性能较好,且内存占用低。

2 遇到的坑

坑1 打开新网页

不支持_blank,_blank用来打开一个新的网页,但WKWebView下却点击无反应。需要进行特殊处理,

-(WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures {
    if (!navigationAction.targetFrame.isMainFrame) {
        [webView loadRequest:navigationAction.request];
    }
    
    return nil;
}

坑2 电话

之前的href=“tel:13764567708”,无法呼起拨打电话,需要在decidePolicyForNavigationAction里面判断URL的scheme(tel、mailto等等),然后用[UIApplication sharedApplication] openURL的方式来拨打电话。

坑3 弹窗

之前在UIWebView下的alert弹窗,在WKWebView下无法显示,需要在runjavascriptAlertPanelWithMessage里面进行处理,转换为UIAlertController然后进行展示,注意completionHandler在UIAlertController消失时一定要调用,否则crash,之前做的功能会在呼起正文时,dismiss掉所有的UIAlertController,但没料到这个是WKWebView的弹出UIAlertController。

以上是关于WKWebView小记的主要内容,如果未能解决你的问题,请参考以下文章