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 函数
如何使用evaluateJavaScript 将数据从WKWebview 发送到HTML 文件| iOS | Objective-C