WKWebView的设置 WKWebView的主要设置项都在configuration成员中(比如是否允许浏览器手指缩放,h5的浏览器能否自动播放等)这些都属于浏览器本身的设置项。...如果设置为YES,只有网页内容加载到内存里了才会去渲染 [self.webview.configuration suppressesIncrementalRendering]; // 默认使...相当于WKWebView加载的生命周期方法。...:(WKNavigation *)navigation{ NSLog(@"页面重定向"); } // 在收到响应后,决定是否跳转 - (void)webView:(WKWebView *)webView...completionHandler{ NSLog(@"%@",message); completionHandler(); } ---- js调用原生方法 拦截url 此方法的本质是,js会尝试加载某个
URL 为本次网页加载结束后的最终请求 两者 URL 区别在于首次发起 302 跳转的请求 title 为本次网页加载结束时的 标签 网页加载 加载在线地址 正常情况下...NSData 后,利用该方法加载,但是要注意获取 NSData 的过程是同步,如果网络请求较慢,会造成主线程阻塞。...移除所有用户脚本 removeAllUserScripts 如果注入时机为在网页渲染前,那么网页加载完毕后执行移除脚本操作,则脚本的运算结果并不会受影响,但是在网页加载完毕前移除脚本的后,脚本将不会执行...可以在任何时机移除,移除后对应的js代码也会移除。...// oc 代码 [WKWebView loadRequest:] // 发生失败会走该回调 // js代码 location.href="http://abcd" // 发生失败会走该回调 当容器开始加载数据
https://blog.csdn.net/u010105969/article/details/53942862 最近开发新功能,其中有加载网页的需求,而最近又了解到了WKWebView,说是耗内存小...因为需要与网页进行交互,而之前使用UIWebView发现与网页的交互并不是很好,于是这次决定使用WKWebView。...在体会着使用新控件且更好的控件的喜悦的时候,一个新的问题出现了--加载网页,后台无法及时获取cookie。后台无法及时获取cookie,在加载网页的时候就无法加载到正确的数据。...(需要多加载几次网页,才能加载到正确的数据) 在查阅相关资料后,发现在使用WKWebView的时候需要我们手动添加cookie到网页中。...而之前使用的UIWebView会自动cookie,所有也就不用我们担心后台无法及时获取cookie的问题。
在iOS中,加载网页目前有两种控件:UIWebView和WKWebView。...6,WKWebView是多进程组件,这意味着会从APP内存中分离内存到单独的进程中。...默认情况下,Web视图会自动将出现在Web内容中的电话号码转换成电话链接。当电话链接被点击时,电话应用程序就会启动并拨打该号码。...布尔值,指示水平滑动手势是否会触发后退列表导航,默认为NO。 backForwardList。网页视图的后退列表,即之前访问过的web页面的列表。 canGoBack。...,然后自动重新加载页面。
iOS中WebKit框架应用与解析 一、引言 在iOS8之前,在应用中嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序中...WKWebView:网页的渲染与展示,通过WKWebViewConfiguration可以进行配置。 WKWebViewConfiguration:这个类专门用来配置WKWebView。...isPersistent) BOOL persistent; //所有可以存储的类型 + (NSSet *)allWebsiteDataTypes; @end //设置是否将网页内容全部加载到内存后再渲染..., copy) NSURL *URL; //网页是否正在加载中 @property (nonatomic, readonly, getter=isLoading) BOOL loading; //加载进度...{ } //主页加载完成时调用 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
库加载并使用, UIWebView 中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...引擎; WKWebView 增加加载进度属性: estimatedProgress ; WKWebView 不支持页面缓存,需要自己注入 cookie , 而 UIWebView 是自动注入 cookie...WKWebView 没有做缓存处理,所以对网页需要缓存的加载性能要求没那么高的还是可以考虑 UIWebView 。 二、WKWebView 有哪一些坑?...而在 UIWebView 会自动带上 Cookie。...视频自动播放 WKWebView 需要通过 WKWebViewConfiguration.mediaPlaybackRequiresUserAction 设置是否允许自动播放,但一定要在 WKWebView
而WKWebView网页加载速度大有提升,占用更少内存。 ... 以前UIWebView会自动去NSHTTPCookieStorage中读取cookie,但是WKWebView并不会去读取,因此导致cookie丢失以及一系列问题,在测试的过程中我们发现在一个活动页面触发了登录之后...从上图可以看出,在app进行登录后,福利社的webview并没有同步获取相应的登录态,究其原因,主要原因是:WKWebView Cookie 问题在于 WKWebView 发起的请求不会自动带上存储于...),但是替换了wkwebview之后,无网络状态下本地的html网页无法加载,结果: ? ...而UIwebview可以让app对于H5容器使用NSURLProtocol技术将H5进行离线包的处理,H5的图片和Native的图片公用一套缓存,因此WKWebView是没有做缓存处理的,对网页需要缓存的加载性能要求没那么高的还是可以考虑
其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的...// 实现自动定位JS代码, htmlLocationID为定位的位置(由JS开发人员给出),实现自动定位代码,应该在网页加载完成之后再调用 NSString *javascriptStr = [NSString...navigationType:(UIWebViewNavigationType)navigationType { //截取URL,这里可以和JS进行交互,但这里没有写,因为会涉及到...例如,使用WKWebView加载百度首页。...都有,WKWebView多了一个加载文件方法,而且WKWebView的这些加载方法都有返回值。
UIWebView 中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...引擎; WKWebView 增加加载进度属性: estimatedProgress ; WKWebView 不支持页面缓存,需要自己注入 cookie , 而 UIWebView 是自动注入 cookie...WKWebView 没有做缓存处理,所以对网页需要缓存的加载性能要求没那么高的还是可以考虑 UIWebView 。 二、WKWebView 有哪一些坑?...而在 UIWebView 会自动带上 Cookie。...视频自动播放 WKWebView 需要通过 WKWebViewConfiguration.mediaPlaybackRequiresUserAction 设置是否允许自动播放,但一定要在 WKWebView
中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript 引擎; WKWebView...增加加载进度属性: estimatedProgress ; WKWebView 不支持页面缓存,需要自己注入 cookie , 而 UIWebView 是自动注入 cookie ; WKWebView...WKWebView 没有做缓存处理,所以对网页需要缓存的加载性能要求没那么高的还是可以考虑 UIWebView 。 二、WKWebView 有哪一些坑?...UIWebView 会自动带上 Cookie。...视频自动播放 WKWebView 需要通过 WKWebViewConfiguration.mediaPlaybackRequiresUserAction 设置是否允许自动播放,但一定要在 WKWebView
作为应用内浏览器,那么进行这种更改是最佳选择 SFSafariViewController自动支持链接预览 iOS 10.0+开始支持自定义链接预览,你也可以通过这种方式来实现用户预览网页并pop后仍然留在应用内而不用切换到...TRUE会覆盖网页中的user-scalable HTML属性 默认值为FALSE。...response对象,会触发异常 如果在任务已经停止加载后调用,将会触发异常 为任务添加接收的数据 - (void)didReceiveData:(NSData *)data; 在任务接受到最终的response...对象后,你应当开始发送数据 每次调用这个方法,新的数据都会append到之前的数据后 如果你尝试在发送response之前或者任务已经结束之后发送数据,将会触发异常 如果在任务已经停止加载后调用,将会触发异常...:(NSError *)error; 当前页面加载完成后触发 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation
示例Demo:WKWebView的使用 本文将从以下几方面介绍WKWebView: 1、WKWebView涉及的一些类 2、WKWebView涉及的代理方法 3、网页内容加载进度条的实现 4、JS...和OC的交互 5、本地HTML文件的实现 一、WKWebView涉及的一些类 WKWebView:网页的渲染与展示 注意: #import //初始化...后,会发现字体小了很多,这应该是WKWebView与html的兼容问题,解决办法是修改原网页,要么我们手动注入JS NSString *jSString = @"var meta = document.createElement...涉及的代理方法 WKNavigationDelegate :主要处理一些跳转、加载处理操作 // 页面开始加载时调用 - (void)webView:(WKWebView *)webView...//添加监测网页加载进度的观察者 [self.webView addObserver:self forKeyPath:NSStringFromSelector
关于WKWebView与UIWebView的对比,大家请自动百度或者google。...| 打开百度网页前 | 打开百度网页后 --------- | --------- | ------------- UIWebView | 内存47M | 内存75.6M,最高峰83M WKWebView...1.创建WKWebView,加载本地HTML。 WKWebView的创建有几点不同: 1.初始化多了个configuration参数,当然这个参数我们也可以不传,直接使用默认的设置就好。...3.在iOS 9之前,WKWebView加载本地HTML会有一些问题。...(不能加载本地HTML,或者部分CSS/本地图片加载不了等) 我这里创建WKWebView的示例代码是这样的: WKWebViewConfiguration *configuration = [
self.mywebView.scrollView.bounces =NO; 3.自动对页面进行缩放以适应屏幕 self.mywebView.scalespageToFit = YES; 4....自动检测网页上的电话号码,单击可以拨打 self.mywebView.detectsPhoneNumbers = YES; 5....loadHTMLString:htmlstring baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 只有使用loadRequest:加载网页...根据导航类型参数可以得到请求发起的原因 //当网页视图被指示载入内容而得到通知应该返回是,这样会进行加载通过导航类型参数可以得到请求发起的原因,可以是以下任意值: - (BOOL)webView:(UIWebView...有两种方式可根据加载内容 获取UIWebView的合适高度,但都需要在网页内容加载完成后才可以,即需要在webViewDidFinishLoad回调中使用。
YES;//是否可以使用JavaScript configuration.preferences.javaScriptCanOpenWindowsAutomatically = NO;//JS是否可以自动打开页面...而主要功能加载web网页,需要使用以下方法: @property (nonatomic, strong) NSURLRequest *resetUrlRequest; self.resetUrlRequest...基本代理相关 常用的有: //开始加载 -(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *...)navigation //加载完成 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation...:(NSError *)error //加载报错,通常来说如果页面出现不存在等问题,会走这里,如果需要对空白页面进行处理,在这里处理 - (void)webView:(WKWebView *)webView
[self.webView loadRequest:request]; UIWebView delegate 协议方法 //网页即将开始加载 - (BOOL)webView:(UIWebView...shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; //网页开始加载...- (void)webViewDidStartLoad:(UIWebView *)webView; //网页加载完成 - (void)webViewDidFinishLoad:(UIWebView...*)webView; //网页加载失败 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;...2.png 在网页加载完成之后使用苹果推荐的JavaScriptCore ? 2.png 对于有参数传递的也是有两种方法获取,详细见图 ?
看网上关于它的博客也是有许多的了,从各个方面总结一下这个WKWebView看网上说它主要是为了和JS做好交互产生的,我们也会相应的尝试一下。就先从它基本的说起!...一:和UIWebView相比它的不同处 1:和JS更好的做交互,也支持H5的一些新特性 2:加载进度条(下面会演示) 3:性能高,加载变得更快更可靠 二:从加载一张网页开始 1:使用这个WKWebView...runJavaScriptAlert 方法注意点 1.在JS端调用alert函数时,会触发此代理方法。...*/ // runJavaScriptAlert // 在JS端调用alert函数时,会触发此代理方法。...// 在原生得到结果后,需要回调给JS,通过completionHandler 回调给JS // completionHandler 回调的参数和返回值都是空 -(void)webView:(WKWebView
从表现上说,改变 hash 会产生网页历史栈,safari 也会产生历史记录,这种场景应该是有和 -webView:didCommitNavigation: 相对应的回调,官方没做好一致性,需通过 WebKit...dispatchDidCommitLoad WebCore::FrameLoader::dispatchDidCommitLoad WebCore::FrameLoader::receivedFirstData 在第一次收到页面数据后,...会进行网页历史栈等状态的处理,最后抛给公开代理。...对于改变页面 hash 打开另一页面场景,是在同一个 Document,FrameLoader 作为专门处理页面加载的地方,应该是有处理目标页面是否是同一 Document 的代码分支,扫描一下就找到了一个可疑的函数...hash 的页面切换的操作了,和 -webView:didCommitNavigation: 配对可完整感知 WKWebView 的页面切换完成时机。
② UIWebView 和 WKWebView 的区别 WKWebView 更快(占用内存可能只有 UIWebView 的1/3~1/4),没有缓存,更为细致地拆分了 UIWebViewDelegate...:didStartProvisionalNavigation: 已开始加载页面,可以在这一步向view中添加一个过渡动画 UIWebViewDelegate - webViewDidStartLoad:...下面的示例代码用于从 WKWebView 中获取网页中的文本。...injectionTime: WKUserScriptInjectionTime.AtDocumentEnd, forMainFrameOnly: true) // 这里的 AtDocumentEnd 字段是指网页中的内容加载完毕后再插入...configuration: config) webview.navigationDelegate = self self.view.addSubview(webview) //加载网页
领取专属 10元无门槛券
手把手带您无忧上云