iOS 9.0以上直接设置WKNavigationDelegate代理 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge...completionHandler(.useCredential, cred) } 引用一下 self.wk.navigationDelegate = self 搞定,成功加载证书错误的站点
基于Swift 3 、 Xcode 8 、 iOS 10 下的WKWebView的使用。 首先是WKWebView的基本用法: var wk:WKWebView!...//定义的进度条 override func viewDidLoad() { super.viewDidLoad() self.wk = WKWebView(frame...CGRect(x: 0,y : 0, width: self.view.frame.width, height:self.view.frame.height) //定位wk位置 wk = WKWebView...//视图已经加载完后执行 override func viewDidAppear(_ animated: Bool){ super.viewDidAppear(animated)...关于WKWebView中Html5图片上传,下一篇随笔我会说一下。
可以先下载Demo看看效果,Github地址: 可以预加载多个网址,然后在离线状态去显示那几个网址,看看是不是都完全缓存下来了...web 页面请求进行预加载 [self.sCache preLoadByWebViewWithUrls:@[@"http://www.v2ex.com",@"http://www.github.com..."]; 如果需要按照单个资源列表进行预加载可以使用 preLoadByRequestWithUrls 这个方法。...STMURLCache 对象释放时将 NSURLCache 设置为不缓存,表示这次预加载完成不需要再缓存。当缓存空间超出设置大小会将其清空。 使用 NSURLProtocol 这种原理基本类似。...完整代码:
前言 页面加载时间指的页面从创建到可见的时间。严格意义上来说页面加载时间测试,更应该是页面的冷加载,不包含接口返回数据时间。...页面加载时间能反映代码中,创建页面视图是否有过度绘制或者绘制不合理导致创建视图时间过长的情况。 UIViewController是什么?...Aspects库是一个是iOS上的轻量级AOP库, https://github.com/steipete/Aspects,另外Aspects封装了iOS runtime的特性。 什么是AOP?...: 0x7ffd0ce39080>页面,页面加载耗时:523.00 2018-10-02 18:11:52.131938+0800 UICatalog[22872:5780236] 页面,页面加载耗时:631.00 结语 客户端专项测试已经做了大半年了,从无到有、从有到持续优化。
不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,在两个平台上支持同一套 API。...增加加载进度属性: estimatedProgress ; WKWebView 不支持页面缓存,需要自己注入 cookie , 而 UIWebView 是自动注入 cookie ; WKWebView...: 大多数App需要支持 iOS7 以上的版本,而 WKWebView 只在 iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...参考文章:[《iOS之Safari调试webView/H5页面》] (https://www.cnblogs.com/dianming/p/6902442.html) 一般我们通过 Mac 的 Safari...ID 写入到可信任设备列表中,然后使用 iTunes 安装客户端提供的测试包即可)。
不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,在两个平台上支持同一套 API。...引擎; WKWebView 增加加载进度属性: estimatedProgress ; WKWebView 不支持页面缓存,需要自己注入 cookie , 而 UIWebView 是自动注入 cookie...WebView 动态加载 参考文章:[《WebView常用优化方案》] (https://www.jianshu.com/p/f64e1b1c90d9) WebView 动态加载。...参考文章:[《iOS之Safari调试webView/H5页面》] (https://www.cnblogs.com/dianming/p/6902442.html) 一般我们通过 Mac 的 Safari...ID 写入到可信任设备列表中,然后使用 iTunes 安装客户端提供的测试包即可)。
参考文章:《UIWebView与WKWebView》 UIWebView 是苹果继承于 UIView 封装的一个加载 web 内容的类,它可以加载任何远端的web数据展示在你的页面上,你可以像浏览器一样前进后退刷新等操作...不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,在两个平台上支持同一套 API。...如果是用正常 HTTP 和 HTTPs 就是用 WKWebView 自带的拦截器,自定义协议用 NSURLProtocol 拦截。...详细可以参考:《NSURLProtocol处理WKWebView的http和https的请求》 5....APP 的包支持调试,如果不能调试,需要让 iOS 开发人员重签名 APP(可能需要将我们 iOS 设备的 ID 写入到可信任设备列表中,然后使用 iTunes 安装客户端提供的测试包即可)。
问题代码 -(void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError...官方解释 原因解析 最有可能的情况是:先加载我们设置好的第一个请求,然后网页在第一个请求完成之前,另外加载了一个URL(即使相同的URL重新加载)。...-(void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *
问题一:加载webView之后浏览网页,有时程序会莫名其妙奔溃,查看内存居然高达上百兆。...问题二:隐藏html页面的广告 解决:在浏览器中取出需要隐藏的class或id的名字。...stringByEvaluatingJavaScriptFromString:@"document.getElementById('要隐藏的内容').hidden = true"]; 问题三:禁止用户点击页面中的超链接
在iOS中,加载网页目前有两种控件:UIWebView和WKWebView。...3,WKWebView的内存占用大概是UIWebView的1/3~1/4,内存占用更低(可以查看该文:https://www.jianshu.com/p/181889939a85)。...布尔值,显示当前页面是否正在加载。 - reload。重新加载当前页面。 - reloadFromOrigin。重新加载当前页面,如果可能,使用缓存验证条件执行端到端重新验证。...重新加载当前页面。 - reloadFromOrigin。重新加载当前页面,如果可能,使用缓存验证条件执行端到端重新验证。 - stopLoading。停止加载当前页面所有资源。...当使用 Https 协议加载web内容时,使用的证书不合法或者证书过期时需要使用该方法. - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge
:(WKWebView *)webView API_AVAILABLE(macosx(10.11), ios(9.0)); 当WKWebView总体内存占用过大,页面即将白屏的时候,系统会调用上面的回调函数...实践发现WKWebView实例其实也会将Cookie存储于NSHTTPCookieStorage中,但存储时机有延迟,在iOS8上,当页面跳转的时候,当前页面的Cookie会写入NSHTTPCookieStorage...不过这种方法依然解决不了页面iframe跨域请求的Cookie问题,毕竟-[WKWebView loadRequest:]只适合加载mainFrame请求。...request3,最后将加载结果返回WKWebView; 5、WKWebView 页面样式问题 在WKWebView适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5页面高度值异常导致...: https://trac.webkit.org/changeset/179160); 对于IOS8系统,可以通过在completionHandler里retain WKWebView防止completionHandler
:(WKWebView *)webView API_AVAILABLE(macosx(10.11), ios(9.0)); 当 WKWebView 总体内存占用过大,页面即将白屏的时候,系统会调用上面的回调函数...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage 中,但存储时机有延迟,在iOS 8上,当页面跳转的时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...不过这种方法依然解决不了页面 iframe 跨域请求的 Cookie 问题,毕竟-[WKWebView loadRequest:]只适合加载 mainFrame 请求。...request3,最后通过 NSURLProtocolClient 将加载结果返回 WKWebView; 5、WKWebView 页面样式问题 在 WKWebView 适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形...refer: https://trac.webkit.org/changeset/179160);对于iOS 8系统,可以通过在 completionHandler 里 retain WKWebView
,iOS 7 及更早版本是 6.66%,而那 6.66% 应该大部分都是对手机使用极度不频繁的人。...WKWebView 是 iOS 8 之后才有的 WebKit 中的内容,所以之前我们要同时兼容 iOS 7 和 iOS 8 的时候,可以推辞说 UIWebView 和 WKWebView 一起做太麻烦了...准备加载页面 UIWebViewDelegate - webView:shouldStartLoadWithRequest:navigationType WKNavigationDelegate - webView...:didStartProvisionalNavigation: 已开始加载页面,可以在这一步向view中添加一个过渡动画 UIWebViewDelegate - webViewDidStartLoad:...: WKNavigationDelegate - webView:didFinishNavigation: 加载页面失败 UIWebViewDelegate - webView:didFailLoadWithError
加载本地地址 Bundle下资源加载 iOS9.0 以上可以使用以下方法加载 - (nullable WKNavigation *)loadFileURL:(NSURL *)URL...通过 [WKWebView loadData:] 和 [WKWebView loadHTMLString:] 方法仅能加载当前HTML内容,无法加载资源文件,这种加载模式下,由于不需要访问其他路径下的资源...网页是否处于加载中,YES 加载中、 NO 加载完成 estimatedProgress: 网页加载进度 hasOnlySecureContent: 网页上的所有资源是否已通过 https 加载 serverTrust...goBack: 返回上一页 goForward: 前进一页 eload: 根据当前URL刷新页面 reloadFromOrigin: 根据最初 URL 刷新页面 stopLoading: 停止加载 evaluateJavaScript...(11.0)); 我们可以通过上述方法对 WKWebView 进行自定义协议拦截,无法拦截 http、https、ws、wss、ftp 协议。
前言: WKWebView 这是在iOS8.0之后增加的一个比UIWebView更加完善和强大的控件!...:(WKNavigation *)navigation { NSLog(@"页面开始加载"); } // 加载内容 -(void)webView:(WKWebView *)webView...WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { NSLog(@"页面加载完成"); } // 页面加载失败...:(NSError *)error { NSLog(@"页面加载失败"); } // 接收到服务器重新配置请求之后再执行 -(void)webView:(WKWebView *)webView...://www.baidu.com/,所以页面是不能被加载的,要是能加载就有下面的打印信息,注意和上面方法的区分对比!
为了兼容iOS8的js通信,也可以在这里拦截url做bridge分发 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...并决定是否拦截 实际应用过程中由于涉及到第三方合作,所以基本采用全部放过+url白名单方式做控制 如果需要对证书做强校验,可以采用AFNetwork的认证证书方式做比对 // 如果需要证书验证,与使用AFN进行HTTPS...https://www.baidu.com"; NSURL* url=[NSURL URLWithString:urlString]; NSURLRequestCachePolicy cachePolicy...,然后请求沙盒方式读取页面 自定义了一个url头部"bundle://",在请求的时候做"file:///"头部替换 4.加载源代码 直接把html文件读出来以后,以页面内容方式去读取 [self.wkWebView...,解压后放在本地指定的沙盒目录,随后通过wkwebview加载本地方式打开页面。
1.1 UIWebView 监听H5页面goBack返回事件 1.2 WKWebView监听H5页面goBack返回事件 2.1 原理 2.2 例子 什么时候会触发这个返回事件?...target 在WKWebView的WKNavigationDelegate代理方法中处理应用跳转 简单的处理WKWebView加载新页面 WKWebView显示JS弹框 WKWebView调用js方法...监听 estimatedProgress 引言 需求:原生app使用WebView 控制器加载H5页面进行信用卡申请 问题:用户点击残忍放弃之后,没有关闭当前控制器 重现场景:用户点击返回按钮,暂时提示框...解决方案: 1、iOS监听H5页面goBack返回事件 2、直接使用Safari打开URL 相关文章: iOS 封装WebView 控制器https://kunnan.blog.csdn.net/article.../details/114832679 I 、 iOS监听H5页面goBack返回事件 方式一:通过与JS的桥接,让h5主动通知你的 如果是采用通过与JS的桥接,让h5主动通知你的方案,请看这两篇文章 1
前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebView的WKScriptMessageHandler实现iOS与JS交互 WKWebView是Apple在iOS8推出的Webkit...框架中的负责网页的渲染与展示的类,相比UIWebView速度更快,占用内存更少,支持更多的HTML特性 I JS调用iOS 使用例子:点击页面图片,调用iOS方法进行图片放大显示 1.1 JS代码: window.webkit.messageHandlers.openImage.postMessage...但只有在整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView的-evaluateJavaScript:completionHandler:方法执行拼接好的JS...WKWebView在每次加载请求完成后会调用此方法 (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation...WKWebView 这么做是为了可以让 iOS 上的 WebView 滚动有更流畅的体验。
由于https地址中,若是加载了http资源,浏览器将认为这是不安全的资源,将会默认阻止,这就会给你带来资源不全的问题了,好比:图片显示不了,样式加载不了,js加载不了。...好比:jquery效法加载失败,可能全部的操做、请求都将无效了。 如果一个https网站中的某个页面内容加载时请求了有js、css、图片和接口四个http协议的资源。...这是由于HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错。...header("Content-Security-Policy: upgrade-insecure-requests"); 方法2:页面设置meta头 在页面中加入 meta 头:(我使用这个方法) <...方法三:删除链接中的http: 推荐方法,不指定具体协议,使用资源协议自适配,比如,当前为https页面,那么就是https资源,如果是http页面,那么就是http资源。
领取专属 10元无门槛券
手把手带您无忧上云