WKWebkit使用

webkit使用WKWebView来代替IOS的UIWebView和OSX的WebView,并且使用Nitro JavaScript引擎,这意味着所有第三方浏览器运行JavaScript将会跟safari一样快。

第一、WKWebView增加的属性和方法

类比UIWebView,跟UIWebView的API对比,

增加的属性:

1、estimatedProgress 加载进度条,在IOS8之前我们是通过一个假的进度条来实现

2、backForwardList 表示historyList

3、WKWebViewConfiguration *configuration; 初始化webview的配置

增加的方法:

1、- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration

初始化

3、(WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item;

跳到历史的某个页面

第二、相同的属性和方法

goBack、goForward、canGoBack、canGoForward、stopLoading、loadRequest、scrollView

第三、被删去的属性和方法:

1、- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

在跟js交互时,我们使用这个API,目前WKWebView完档没有给出实现类似功能的API

2、无法设置缓存

在UIWebView,使用NSURLCache缓存,通过setSharedURLCache可以设置成我们自己的缓存,但WKWebView不支持NSURLCache

第四、delegate方法的不同

UIWebView支持的代理是UIWebViewDelegate,WKWebView支持的代理是WKNavigationDelegate和WKUIDelegate

WKNavigationDelegate主要实现了涉及到导航跳转方面的回调方法

WKUIDelegate主要实现了涉及到界面显示的回调方法:如WKWebView的改变和js相关内容

具体来说WKNavigationDelegate除了有开始加载、加载成功、加载失败的API外,还具有额外的三个代理方法:

1、- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation

这个代理是服务器redirect时调用

2、- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler

这个代理方法表示当客户端收到服务器的响应头,根据response相关信息,可以决定这次跳转是否可以继续进行。

3.- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

根据webView、navigationAction相关信息决定这次跳转是否可以继续进行,这些信息包含HTTP发送请求,如头部包含User-Agent,Accept

时间: 2024-10-12 08:57:01

WKWebkit使用的相关文章

WKWebKit基础

UIWebView & UIWebViewDelegate 这个两个东西在 WKWebKit 中被重构成 14 个类 3 个协议. WKWebKit Framework Classes WKBackForwardList: 之前访问过的 web 页面的列表,可以通过后退和前进动作来访问到. WKBackForwardListItem: webview 中后退列表里的某一个网页. WKFrameInfo: 包含一个网页的布局信息. WKNavigation: 包含一个网页的加载进度信息. WKNa

Web开发者和设计师必须要知道的 iOS 8 十个变化

概述 简介 iOS 8 上的 Safari 的更新 iPhone 6 和 iPhone 6 Plus 新 Api 支持 Safari 新功能和支持 iOS 8 原生优化 Safari 插件 新的设计 视频增强 iOS 8上的JS Bug 和问题 已经习惯了苹果官方的高冷,这次,苹果依旧没有更新任何与 Safari 或者 iOS 相关的文档,所以下面的所有数据和资料都是基于我自己的测试和 WWDC 上公布的信息. iOS 8 上的 Safari 支持HTML5新APIs: WebGL (3D ca

关于 iOS 10 中 ATS 的问题

WWDC 15 提出的 ATS (App Transport Security) 是 Apple 在推进网络通讯安全的一个重要方式.在 iOS 9 和 OS X 10.11 中,默认情况下非 HTTPS 的网络访问是被禁止的.当然,因为这样的推进影响面非常广,作为缓冲,我们可以在 Info.plist 中添加 NSAppTransportSecurity 字典并且将 NSAllowsArbitraryLoads 设置为 YES 来禁用 ATS.相信大家都已经对这个非常熟悉了,因为我自己也维护了一

iOS 8 WKWebView

首先看看这篇文章,写得很好:http://nshipster.cn/wkwebkit/ 再推荐去看看 iOS_8_by_Tutorials 这本书里的 WKWebView相关章节! 我这里说下自己的简单体会: 1.对比UIWebView ,网上说WKWebView的效率要高,到底高多少,不清楚. 2.WKWebView将javascript的注入,以及javascript传回数据的方法标准化了.在UIWebView时代,执行javascript没什么问题,但是从javascript传回数据就麻烦

iOSUIWebView---快停下啦,你的愚蠢的行为

公元前 之前还是学生时代的时候给社团们学弟学妹们介绍iOS编程的时候,简单的准备了图灵ios培训第一周(使用UIWebView创建简易浏览器), NSURL *url =[NSURL URLWithString:urlString]; NSLog(urlString); NSURLRequest *request =[NSURLRequest requestWithURL:url]; [webView loadRequest:request]; 运用的就是上面的这样的三行代码搞定一切的网页载入的

iOS- "_OBJC_CLASS_$_WKWebView", referenced from: 解决记录

公司项目升级,将原本的UIWebView升级为更轻量级,占用内存更少的WKWebView,代码搞定,居然报错: "OBJC_CLASS$_WKWebView", referenced from: 和link连接错误. 在这里找到了解决方案: http://stackoverflow.com/questions/27615041/uiwebview-and-wkwebview 答曰:Go to your Project, click on General, scroll down to

APP链接请求电话

1.使用OpenURL执行:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:07551111"]]; 跳转不会返回APP且不会提示. 注:使用@"telprompt:"链接的URL是可以进行弹框并返回的  其实prompt已经告诉了为警示框,是可以理解为显示弹出返回的 2.使用UIWebView或者WKWebkit类  ------能弹框并能返回到APP界面中 [web lo

[转]Web开发者和设计师必须要知道的 iOS 8 十个变化

概述 简介 iOS 8 上的 Safari 的更新 iPhone 6 和 iPhone 6 Plus 新 Api 支持 Safari 新功能和支持 iOS 8 原生优化 Safari 插件 新的设计 视频增强 iOS 8上的JS Bug 和问题 已经习惯了苹果官方的高冷,这次,苹果依旧没有更新任何与 Safari 或者 iOS 相关的文档,所以下面的所有数据和资料都是基于我自己的测试和 WWDC 上公布的信息. iOS 8 上的 Safari 支持HTML5新APIs: WebGL (3D ca

iOS10 适配 ATS(app支持https通过App Store审核) 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 一. HTTPS 其实HTTPS从最终的数据解析的角度,与HTTP没有任何的区别,HTTPS就是将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全:而对于接收端,在SSL/TSL将接收的数据包解密之后,将数据传给HTTP协议层,就是普通的HTTP数据.HTTP和SSL/TSL都处于OSI模型的应用层.从HTTP