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小记的主要内容,如果未能解决你的问题,请参考以下文章

从使用 wkwebview 返回值的 javascript 调用 swift 函数

WKWebView与js交互中产生的内存泄漏

如何使用evaluateJavaScript 将数据从WKWebview 发送到HTML 文件| iOS | Objective-C

WKWebView的goback函数不执行javascript代码

WKWebView 在触发原生代码之前等待 DOM 渲染

无法在 Xamarin IOS 中捕获 WkWebView 的屏幕