WKWebView
一.WKWebViewConfiguration
1.WKPreferences
当前webview的相关设置
1 |
|
2.WKUserContentController
用户脚本
1 | // 已经注入的用户脚本 |
二.WKNavigationDelegate
hook整个webview加载过程中的生命周期,通过decisionHandler让用户决定拦截自行处理或是继续进行。
1 | /// ① 根据WebView对于即将跳转的HTTP请求头信息和相关信息来决定是否跳转 |
三.WKUIDelegate
代表网页呈现本地UI。
1 | /// web 调用 alert() |
四.WKScriptMessageHandler
1 | /// 监听js中 window.webkit.messageHandlers.<name>.postMessage() 方式传递过来的数据 |
五.缓存相关
1.NSURLRequest 缓存
NSURLRequestUseProtocolCachePolicy策略:
http和https缓存的详细文档:
https://imweb.io/topic/5795dcb6fb312541492eda8c
总结:
请求头中的三个字段
Cache-Control : 控制缓存的行为 (no-cahce 确认返回的响应是否更改,若响应体Etag未变化, 请求还是会失败返回304)
If-Modified-Since: Last-Modified-value
If-Match (If-No-Match) : 上次请求成功的Etag
响应体:
Last-Modified:上一次修改时间
Etag: 一个可以与资源关联的唯一id
2.WKWebsiteDataStore
一个网站可能拥有的各种类型的数据缓存
1 | // 沙盒目录: Library/Caches/${BundleId}/WebKit/... |