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. C# winwordcontrol控件编程

    C# word控件WinWordControl可创建.编辑.保存word. 1.使用代码直接创建word文件,同时可以添加页眉.内容.图片及表格,示例代码: /// <summary>   ...

  2. 《Openstack的搭建》RHEL6.5

    Openstack就是搭建一个较为完整的虚拟化平台,把一个完整的物理机划分成若干个虚拟机来跑,从而实现资源的充分利用. Openstack对硬件的要求很高,要是你的物理机内存是4G的话,虚拟机的内存给 ...

  3. Android 仿微信朋友圈添加图片

    github地址(欢迎下载Demo) https://github.com/zhouxu88/WXCircleAddPic 老习惯,先上图,着急用的朋友,直接带走Demo,先拿来用吧,毕竟老板催的紧, ...

  4. Android程序初体验

    第一个程序的实现的最终功能是: 点击"正确"或者"错误"会得到一个是否正确的提示. 直接上效果图.     此次涉及代码编写的文件有4个: package co ...

  5. 基于51单片机个LCD1602的万年历程序

    小白 第一次跟新博客 基于51单片机和LCD1602的万年历程序 可实现走时和调时功能 有简单的1602菜单制作 欢迎大家交流 LCD1602和51单片机的连接方法 RS = P3^5; //数据/命 ...

  6. 如何在Kubernetes里创建一个Nginx service

    Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的 ...

  7. ActiveMQ消息丢失怎么解决?

    在消息发送过程中消息丢失的话该怎么解决(包括网络原因): 解决思路: 可以把消息唯一ID,存到表里面,当消息接受端可以获取到这个ID,就给服务端一个回复IF,消息发送出去,没有回复,THEN一直循环发 ...

  8. Hermite 矩阵及其特征刻画

    将学习到什么 矩阵 \(A\) 与 \(\dfrac{1}{2}(A+A^T)\) 两者生成相同的二次型,而后面那个矩阵是对称的,这样以来,为了研究实的或者复的二次型,就只需要研究由对称矩阵生成的二次 ...

  9. eclipse 在写XML时 包类名自动提醒的问题

    需要加一个STS插件 配置很简单 参考了  https://blog.csdn.net/HH775313602/article/details/70176531 在 https://spring.io ...

  10. jquery动态实现填充下拉框

    当点下拉框时动态加载后台数据. 后台代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) ...