WebKit

2018-09-12  本文已影响0人  Shorebloom_59f6

WEbKit

博客链接

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

Classes:

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

userScript属性: 与用户相关联的用户脚本内容控制器)

还有WKWebsiteDataStore&WKWebsiteDataRecord两个类

Protocols:

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);
上一篇 下一篇

猜你喜欢

热点阅读