WKWebKit基础

Posted 小屁孩~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WKWebKit基础相关的知识,希望对你有一定的参考价值。

UIWebView & UIWebViewDelegate 这个两个东西在 WKWebKit 中被重构成 14 个类 3 个协议。

WKWebKit Framework

Classes

  • WKBackForwardList: 之前访问过的 web 页面的列表,可以通过后退和前进动作来访问到。
    • WKBackForwardListItem: webview 中后退列表里的某一个网页。
  • WKFrameInfo: 包含一个网页的布局信息。
  • WKNavigation: 包含一个网页的加载进度信息。
    • WKNavigationAction: 包含可能让网页导航变化的信息,用于判断是否做出导航变化。
    • WKNavigationResponse: 包含可能让网页导航变化的返回内容信息,用于判断是否做出导航变化。
  • WKPreferences: 概括一个 webview 的偏好设置。
  • WKProcessPool: 表示一个 web 内容加载池。
  • WKUserContentController: 提供使用 javascript post 信息和注射 script 的方法。
    • WKScriptMessage: 包含网页发出的信息。
    • WKUserScript: 表示可以被网页接受的用户脚本。 > - WKWebViewConfiguration: 初始化 webview 的设置。
  • WKWindowFeatures: 指定加载新网页时的窗口属性。

Protocols

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

JavaScript ↔? Swift 对话机制

WKUserScript 允许在正文加载之前或之后注入到页面中。这个强大的功能允许在页面中以安全且唯一的方式操作网页内容。

一个简单的例子如下,用户改变背景的用户脚本被插入到网页中:

Swift:

let source = "document.body.style.background = \"#777\";"
let userScript = WKUserScript(source: source, injectionTime: .AtDocumentEnd, forMainFrameOnly: true)

let userContentController = WKUserContentController()
userContentController.addUserScript(userScript)

let configuration = WKWebViewConfiguration()
configuration.userContentController = userContentController
self.webView = WKWebView(frame: self.view.bounds, configuration: configuration)

Objective-C:

NSString *source = @"document.body.style.background = \"#BECAC1\";";
    WKUserScript *userScript = [[WKUserScript alloc] initWithSource:source injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:true];
    WKUserContentController *userContentController = [[WKUserContentController alloc] init];
    [userContentController addUserScript:userScript];
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    configuration.userContentController = userContentController;
    
    _webView = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT) configuration:configuration];
    _webView.navigationDelegate = self;
    _webView.UIDelegate = self;
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];
    [self.view addSubview:_webView];

 

以上是关于WKWebKit基础的主要内容,如果未能解决你的问题,请参考以下文章

WKWebKit 实现(Objective-C)

用于 JavaScript 的 UIWebView 或 WKWebkit?

WKWebkit使用

固定元素在 WKWebkit 上移动

Xcode 6 + iOS 8 SDK 但部署在 iOS 7 (UIWebKit & WKWebKit)

SecurityError (DOM Exception 18): 操作不安全 WKWebkit iOS 10