iOS-69-WKWebview用法与UIWebview对比(附demo、PPT)

来源:互联网 发布:matlab7,1如何进入编程 编辑:程序博客网 时间:2024/05/22 16:38

一、终于有时间写个博客了,一写就停不下来啊,资源上传不尽啊,最近一直忙着各种生活、工作的事情,现在再分享点小东西。本来想打算好好地写篇博客介绍下WKWebview的用法,但是我做了一个PPT,更方便和详细的介绍了两者的用法和区别,并在调试中遇到的问题,详细请下载demo文件,内含PPT、demo源码

二、调研笔记:调研UIWebview和WKWebview异同点
1、UIWebview+JavascriptCore < WKWebview (协议:WKScriptMessageHandler, WKNavigationDelegate, WKUIDelegate)
3、这两个方法类似:UIWebview: shouldStartLoadWithRequestWKWebview: decidePolicyForNavigationAction
4、WKWebview自带进度条
5、通过kvo技术可监听捕获加载状态、标题、进度条状态(loading、title、estimatedProgress)
6、UIWebview自动存储cookie信息;WKWebview需手动存储 (例如:在web页面调用登录接口,UIWebview可以自动的将Teldsid赋给登录接口,WKWebview需手动赋值) ;手动添加cookie的方式多一种(
让前端根据不同平台做出不同的响应)
7、捕获js中的方法:如果我们的页面中有调用了js的alert、confirm、prompt方法,会对应WKWebview的三个代理方法: (1)、runJavaScriptAlertPanelWithMessage (2)、runJavaScriptConfirmPanelWithMessage (3)、runJavaScriptTextInputPanelWithPrompt
8、APP执行js:
UIWebview: [_webView stringByEvaluatingJavaScriptFromString:@”var p =document.getElementById(‘p’);” ];
WKWebview:[_webView evaluateJavaScript:@”var p = document.getElementById(‘p’);” completionHandler:nil] (回调方法)
9、三个代理作用
1、WKNavigationDelegate:用来追踪加载过程(页面开始加载、加载完成、加载失败)、决定是否执行跳转 2、WKUIDelegate:
1):创建一个新的WebView 、
2): 针对web界面的三种提示框(警告框、确认框、输入框)
(1)、runJavaScriptAlertPanelWithMessage
(2)、runJavaScriptConfirmPanelWithMessage
(3)、runJavaScriptTextInputPanelWithPrompt
3、WKScriptMessageHandler:从web界面中接收到一个脚本时调用
代理方法:-(void)userContentController:(WKUserContentController )userContentController didReceiveScriptMessage:(WKScriptMessage )message;
10、WKWebview缺点:addScriptMessageHandler 存在内存泄漏问题
当前解决办法:另建一个遵循WKScriptMessageHandler协议的类,
11.WKWebview(UIWebview没有这个问题):
NSHTTPCookieExpires 添加cookie时,若不设置过期时间会添加不上cookie信息,所以~~~
第二种解决办法:在初始化web view时,直接通过配置WKWebViewConfiguration参数

三、demo、PPT下载地址:http://download.csdn.net/detail/iot_li/9604011

0 0
原创粉丝点击