WebKit

WEbKit

博客链接

UIWebView&UIWebDelegate这两个东西在WKWebKit中被重构成16个类、3个协议

Classes:

  • WKBackForwardList:历史记录列表,可以通过后退和前进动作访问到;(- itemAtIndex: 该类中唯一方法,用于返回项目在指定的距离当前项目。还有backItem、currentItem、forwardItem、backList、forwardList属性)

  • WKBackForwardListItem: webView中后退列表里的某一网页;(有URL、title、initialURL三个属性)

  • WKFrameInfo: 包含一个框架在一个网页的信息;(有mainFrame、request、securityOrigin三个属性,其中securityOrigin是一个WKSecurityOrigin对象属性,iOS9之后可使用,是由一个主机名称,协议和端口号组成。)

  • WKNavigation: 包含一个网页加载进度信息;

  • WKNavigationAction:包含可能让网页导航变化的信息,用于判断是否做出导航变化;(值得注意的是可能会常用的 WKNavigationType这个枚举)

  • WKNavigationResponse:包含可能让网页导航变化的返回内容信息,用于判断是否做出导航变化;

  • WKPreferences:概括一个webView的偏好设置;( minimumFontSize、 javaScriptEnabled、 javaScriptCanOpenWindowsAutomatically三个属性,值得注意的是后两个属性,一个决定是否启用javaScript,另一个是在没有用户交互的情况下,是否JavaScript可以打开windows)

  • WKProcessPool:表示一个web内容加载池;

  • WKUserContentController:提供使用JavaScript post信息和注射script的方法。

- addScriptMessageHandler:name: 添加一个消息处理程序脚本 
- addUserScript: 添加一个用户脚本 
- removeAllUserScripts remove所有用户脚本 
- —removeScriptMessageHandlerForName: 删除一个消息处理程序的脚本 

userScript属性: 与用户相关联的用户脚本内容控制器)
  • WKScriptMessage: 包含网页发出的信息。(body、webView、frameInfo、name)
  • WKUserScript:表示可以被网页接受的用户脚本。
  • WKWebViewConfiguration: 初始化 webview 的设置。(- initWithSource:injectionTime:forMainFrameOnly: 返回一个初始化用户脚本,可以添加到一个用户内容控制器 还有source、injectionTime、forMainFrameOnly)
  • WKWindowFeatures:指定加载新网页时的窗口属性。(全是窗口属性)
  • WKWebViewConfiguration:对象是属性的集合用来初始化一个web视图。(属性比较多,不过这个对象在初始化web视图的时候必须会用到)

还有WKWebsiteDataStore&WKWebsiteDataRecord两个类

Protocols:

  • WKNavigationDelegate:提供了追踪主窗口网页加载过程和判断主窗口和子窗口是否进行页面加载新页面的相关方法。
  • WKScriptMessageHandler: 提供从网页中收消息的回调方法。
  • WKUIDelegate: 提供用原生控件显示网页的方法回调。

WKNavigationDelegate:

- webView:didCommitNavigation: 主框架在内容开始到达时调用。
- webView:didFailNavigation:withError: 主框架导航发生错误时调用。
- webView:didFailProvisionalNavigation:withError: 主框架在开始加载数据出现错误时调用
- webView:didFinishNavigation: 主框架导航完成时调用
- webView:didReceiveAuthenticationChallenge:completionHandler: web视图需要响应身份验证时调用
- webView:didReceiveServerRedirectForProvisionalNavigation: 主服务器接受到重定向时调用
- webView:didStartProvisionalNavigation: 主框架导航开始时调用
- webView:decidePolicyForNavigationAction:decisionHandler: 决定是否允许或取消一个导航
- webView:decidePolicyForNavigationResponse:decisionHandler: 决定是否允许或取消一个导航后其反应是已知的

WKScriptMessageHandler:

userContentController:didReceiveScriptMessage:(required)一个脚本从一个网页接收到消息时调用

WKUIDelegate:

webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:创建一个新的webView
webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler: 显示一个JavaScript警告面板。
webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:显示一个JavaScript确认面板。
webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler: 显示一个JavaScript文本输入面板。

其中一些类中的枚举状态:

typedef NS_ENUM(NSInteger, WKNavigationType) {
    WKNavigationTypeLinkActivated,//链接的href属性被用户激活。
    WKNavigationTypeFormSubmitted,//一个表单提交。
    WKNavigationTypeBackForward,//回到前面的条目列表请求。
    WKNavigationTypeReload,//网页加载。
    WKNavigationTypeFormResubmitted,//一个表单提交(例如通过前进,后退,或重新加载)。
    WKNavigationTypeOther = -1,//导航是发生一些其他原因。
} NS_ENUM_AVAILABLE(10_10, 8_0);
typedef NS_ENUM(NSInteger, WKUserScriptInjectionTime) {
    WKUserScriptInjectionTimeAtDocumentStart,//注入后的脚本创建文档元素,但在其他任何内容已经被加载。
    WKUserScriptInjectionTimeAtDocumentEnd//注入脚本文档完成加载后,但在任何子资源可能完成加载。
}
 NS_ENUM_AVAILABLE(10_10, 8_0);

typedef NS_ENUM(NSInteger, WKNavigationActionPolicy) {
    WKNavigationActionPolicyCancel,//取消导航
    WKNavigationActionPolicyAllow,//允许导航继续
} NS_ENUM_AVAILABLE(10_10, 8_0);

typedef NS_ENUM(NSInteger, WKNavigationResponsePolicy) {
    WKNavigationResponsePolicyCancel,//取消导航
    WKNavigationResponsePolicyAllow,//允许导航继续
} NS_ENUM_AVAILABLE(10_10, 8_0);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容