Webkit 是 iOS 8.0 后提供的新的框架,组件WKWebView比较UIWebView 速度更快、占用内存更少了,可支持性更多

WKWebView可通过KVO监听属性 title、estimaredProgress、hasOnlySecureContent

estimatedProgress: 当前navigation加载的进度,加载进度包括主要文档和其他的子资源文件
hasOnlySecureContent:加载的网页的所有资源是否通过安全编码链接加载的

      webView?.addObserver(self, forKeyPath: "title", options: .new, context: nil)
webView?.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)
  override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "title" { }else if keyPath == "estimatedProgress"{
let estimatedProgress = Float((self.webView?.estimatedProgress)!)
self.progressView?.setProgress(estimatedProgress, animated: true)
}else{
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
}
}

WKWebViewConfiguration : WKWebView初始化时可设置的配置化信息,可设置偏好信息,设置js与WebView交互

  let configuration = WKWebViewConfiguration()
//偏好设置
configuration.preferences = WKPreferences.init()
configuration.preferences.minimumFontSize =
configuration.preferences.javaScriptEnabled = true
//内容处理池
configuration.processPool = WKProcessPool.init()
// 通过js与WebView交互
configuration.userContentController = WKUserContentController.init()
     //WKUserContentController 向webView提供发送js 信息的桥梁
 // 调用js
webView.evaluateJavaScript("showAlert('调用js 弹窗')") { (itme, error) in }

页面加载前回调代理:

  

    // 打开网页前判断是否跳转代理
// WKNavigationAction 包含了请求网页过程的信息 判断是否允许跳转
// sourceFrame
// targetFrame,分别代表这个action的出处和目标.navigationAction.targetFrame?.isMainFrame 可判断是否新开页面跳转
// WKNavigationType:
// case linkActivated //链接href被激活
//
// case formSubmitted //一个表单的提交
//
// case backForward
//
// case reload //网页加载
//
// case formResubmitted //表单提交
//
// case other func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { decisionHandler(WKNavigationActionPolicy.allow)
}

iOS WKWebView的更多相关文章

  1. iOS WKWebview 网页开发适配指南

    iOS WKWebview 网页开发适配指南 微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配.如有问题,可参考文末联系方式,向我们 ...

  2. iOS WKWebView详解

    UIWebView就不用说了,这个过时了,现在iOS8以后建议都使用WKWebView. WKWebView 是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心 ...

  3. 微信iOS WKWebview 网页开发适配指南

    微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配. 背景 WKWebView 是苹果在iOS 8中引入的新组件,目的是提供一个现代的 ...

  4. ios WKWebView 与 JS 交互实战技巧

    一.WKWebView 由于Xcode8发布之后,编译器开始不支持iOS 7了,这样我们的app也改为最低支持iOS 8.0,既然需要与web交互,那自然也就选择使用了 iOS 8.0之后 才推出的新 ...

  5. iOS WKWebview 网页开发适配指南【转】

    微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配.如有问题,可参考文末联系方式,向我们咨询. 背景 WKWebView 是苹果在iO ...

  6. iOS wkwebview https 加载不受信用的站点

    iOS 9.0以上直接设置WKNavigationDelegate代理 func webView(_ webView: WKWebView, didReceive challenge: URLAuth ...

  7. iOS WKWebView OC 与 JS 交互学习

    我写WKWebView 想让 服务端相应 一个 方法但是不响应,根据 UIWebView 用 JSContext就能拿到响应的处理经验是不是服务端 也需要 对 WKwebView有兼容的一个写法??? ...

  8. iOS WKWebView的javascript alert 不弹的解决方案

    - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiate ...

  9. iOS wkwebview懒加载中遇到的问题

    这是我遇到的问题,也许是个例,就算狗血了点吧 需求: 当前界面(mainVC)响应点击事件,传值给webviewController(webVC)其中包含网址,此时如果在webVC中对wkwebvie ...

随机推荐

  1. MVC 下载相关

    前台: location.href = "/Flow/SB1SP?clxxid=8099b23c-aa5a-44a3-97ef-85eed78145ba"; 后台: publci ...

  2. mybatis内置二级缓存。

    一.查询缓存的使用,主要是为了提供查询访问速度.将用户对同一数据的重复查询过程简化, 不再每次均从数据库查询获取结果数据,从而提高访问速度. 二.内置二级缓存... 由于MyBatista从缓存中读取 ...

  3. 定时任务-ScheduledExecutorService

    创建定时任务线程池的方式 ScheduledExecutorService executorService = Executors.newScheduledThreadPool(4);// 不推荐// ...

  4. 《Head First HTML与CSS》项目实践中学到的东西

    1.组织的重要性. 首先是要建立两个根文件夹,一个存上线页面的资源,一个存测试页面的资源.所有改动内容都在测试页面的文件夹中进行,在这个文件夹中进行测试.W3C语法检测后(HTML检测网站:https ...

  5. codevs 1262 不要把球传我 2012年CCC加拿大高中生信息学奥赛

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题目描述 Description CCC的足球比赛和传统的足球比赛有一点不同, 一次进球当且仅当先后接触到球的 ...

  6. ubuntu16 安装elasticsearch6.3问题

    1.ubuntu16 安装elasticsearch6.3 elasticsearch 6.3需要的java的版本是1.8以上 安装java1.8 详见本博客的安装java https://www.c ...

  7. Windows Dos命令下查看端口号,杀死端口

    PS:本文以 Redis 默认端口 6379 为例   1,首先查询该端口的 pid,使用命令 [netstat -ano | findstr 端口号]   F:\Program Files\Redi ...

  8. MAC环境Android SDK环境变量配置

    一.材料 1.Mac设备1台: 2.下载并更新android SDK:示列中sdk存放路径为/Users/gametest/Library/Android/sdk 二.操作步骤 1.启动Termina ...

  9. strchr函数

    函数原型:extern char *strchr(char *str,char character) 参数说明:str为一个字符串的指针,character为一个待查找字符.         所在库名 ...

  10. jExcelAPI导入导出excel

      MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式.作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便.在 ...