WKWebView 几个不常用的特性 WKWebview 加载过程中的性能指标图解 WKWebview 秒开的实践及踩坑之路 今天分享的这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...,属于单页渲染和加载,所以效率高。...WKWebView 属性 webView 属性 title: 网页的标题,一般为 html 中的 中的内容 URL: 网页的URL地址,为最终加载的地址 loading:...请求头信息 allowsLinkPreview: 允许 3Dtouch 预览页面,压力屏存在的情况下 webView 方法 canGoBack: 是否可以返回上一页 canGoForward: 是否可以前进一页...goBack: 返回上一页 goForward: 前进一页 eload: 根据当前URL刷新页面 reloadFromOrigin: 根据最初 URL 刷新页面 stopLoading: 停止加载 evaluateJavaScript
在 WKWebView 中加载下面的测试链接可以稳定重现白屏现象: http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候 WKWebView.URL...会变为 nil, 简单的 reload 刷新操作已经失效,对于一些长驻的H5页面影响比较大。...[webView reload](这个时候 webView.URL 取值尚不为 nil)解决白屏问题。...B、检测 webView.title 是否为空 并不是所有H5页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload 页面
在 WKWebView 中加载下面的测试链接可以稳定重现白屏现象: http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候 WKWebView.URL...[webView reload](这个时候 webView.URL 取值尚不为 nil)解决白屏问题。...B、检测 webView.title 是否为空 并不是所有H5页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload 页面...; 5、WKWebView 页面样式问题 在 WKWebView 适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5页面高度值异常导致: a.
在WKWebView中加载下面的测试链接可以稳定重现白屏现象:http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候webView.URL会变为nil...[webView reload] (这个时候webView.URL取值尚不为nil)解决白屏问题。...1.2、检测webView.title是否为空 并不是所有页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏的时候,另一种现象是webView.titile会被置空, 因此可以在viewWillAppear的时候检测webView.title是否为空来reload页面。...; 5、WKWebView 页面样式问题 在WKWebView适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5页面高度值异常导致: a.
在开发iOS版的直播卖货系统源码过程中,如何在html上展示商品详情,下面小编将从WKWebView入手,来介绍下实现过程。...1、创建WKWebview - (WKWebView *)webView{ if (!...html的格式,让其符合手机端展示,如果服务端返回的就是手机端展示的样式,这就可以不用更改 直接用就可以了 NSString * htmlStyle = @" 更改webView的frame - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified...isEqualToString: @"image-preview"]) { NSString *url = [request.URL.absoluteString substringFromIndex
(这个时候 webView.URL 取值尚不为nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5页面恢复正常显示。 6....DebugGap 1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 DebugGap 七、在 iOS 平台下如何调试 WebView?
然后点击下一页的按钮 通过js的响应显示另一个网页 最后通过下一页的按钮可以返回到首页。 本文仅仅是h5跟ios 的交互的入门 所以没有做细致的描述。...这个小demo不涉及数据传输,只是界面的交互。 1 我自己写了两个小网页。 代码如下 首页的indexPage.html alert("123"); function next(){ WOSS.goForward("下一页","http://127.0.0.1...:8020/HelloHBuilder/index2.html"); } 第二个界面的html index2.html wkwebview 这个是ios8之后出来的,就在#import 这个类里边就包含了这个wkwebview这个类,wkwebview继承于uiview 特点
:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL NS_AVAILABLE(10_11, 9_0); // 前进或者后退到某一页面...- (nullable WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item; // 页面的标题,这昆支持KVO...canGoBack; // 是否可以执行gofarward操作,支持KVO @property (nonatomic, readonly) BOOL canGoForward; // 返回上一页面...,如果不能返回,则什么也不干 - (nullable WKNavigation *)goBack; // 进入下一页面,如果不能前进,则什么也不干 - (nullable WKNavigation...URL @property (readonly, copy) NSURL *URL; // 该页面的title @property (nullable, readonly, copy) NSString
(这个时候 webView.URL 取值尚不为 nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear的时候检测 webView.title 是否为空来 reload 页面...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5页面恢复正常显示。 6....1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?
遗留问题: 目前,在使用WKWebView的过程中,唯一未解决的问题就是可靠、全面的白屏检测方案,从而支持WKWebView在任何情况下的Crash进行重载。...如何在页面中合理的处理WebView与扩展区中的多种View协同滚动,灵活扩展,并且支持下拉刷新、上拉加载等操作,不同的新闻类App也有不同的技术方案。 1....在此基础上,要动态的检测ContenSize是否小于屏幕高度,高度小于一屏幕时,要同时调整Native扩展区组件的位置。 2....- 内容页组件化架构 - 在实现了以上技术关键点的基础上,如何合理的设计内容页通用的架构,快速响应内容页的各种需求调整,使整体架构易扩展、易维护,同时有较高的性能及较小的内存占用,成为了整个内容页架构实现的重点...除了基本的线程安全、复用状态管理等,在进入回收池前要load特殊Url以维护整个backFowardList。
Hybrid 、Native、前端各自的工作是什么 Hybrid 交互接口如何设计 Hybrid 的 Header 如何设计 Hybrid 的如何设计目录结构以及增量机制如何实现 资源缓存策略,白屏问题...,Native如果检测到不可后退则返回Naive大首页 // home前端默认返回指定URL,Native默认返回大首页 this.header.set({ left: [...可以通过内容的控制,避免 wap 页中出现外部页面的跳转,也可以通过 webview 的对应代理方法,禁掉我们不希望出现的跳转类型,或者同时使用,双重保护来确保当前 webview 容器中只会出现我们定制过的内容...基于上面的方案,我们的 wap 页的完整展示流程是这样:客户端在 webview 中加载某个 url,判断符合规则,load 本地的模板 html,该页面的内部实现是通过客户端提供的网络请求接口,发起获取具体页面内容的网络请求...能拿到 WKWebView 里面的 post 请求信息,剩下的就不是问题啦。 AJAX hook 的实现可以看这个 Repo.
webView.URL 取值尚不为 nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear的时候检测 webView.title 是否为空来 reload 页面...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5页面恢复正常显示。 6....1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?
二、如何优化 上述打开一个页面的过程有很多优化点,包括前端和客户端,常规的前端和后端的性能优化已有前辈们总结过最佳实践,主要的是: 降低请求量:合并资源,减少 HTTP 请求数,minify / gzip...整体思路看起来比较清晰,但是其中有几个关键问题需要解决: 3.1 本地H5页面如何和native通信: 本地 H5 页面如何和 native 通信的方式基本有三种:jsapi、URL Scheme 和...这种的方案,就可以较好的解决上面的问题了。 ?...屏蔽webview HTML 内容自动识别 在 IOS webView 中默认会自动检测 HTML 中手机号、email、地址格式并标记。...i18n.en : i18n.zh WKWebView 兼容 WKWebView 性能比 UIViewView 性能好很多,所以客户端开发一般都推荐使用 WKWebView。
Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?...); } } iOS 的 WKWebview 可以根据拦截到的 URL Scheme 和对应的参数执行相关的操作。...} decisionHandler(WKNavigationActionPolicyAllow); } 这种方法的优点是不存在漏洞问题、使用灵活,可以实现 H5 和 Native 页面的无缝切换...例如在某一页面需要快速上线的情况下,先开发出 H5 页面。...使用该方式时,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。
; 在iOS上,这个属性只在支持3D Touch的设备上支持 在iOS 10及以后的系统版本默认值是YES,之前的默认值是NO 如果将该属性的值设置为YES,则iOS用户可以按下链接来预览链接,并可以检测到地址和电话号码等数据...作为应用内浏览器,那么进行这种更改是最佳选择 SFSafariViewController自动支持链接预览 iOS 10.0+开始支持自定义链接预览,你也可以通过这种方式来实现用户预览网页并pop后仍然留在应用内而不用切换到...WKUserInterfaceDirectionPolicy userInterfaceDirectionPolicy; 默认值是WKUserInterfaceDirectionPolicyContent 设置需要检测的数据类型...WKDataDetectorTypes WKDataDetectorTypeNone 不执行检测 WKDataDetectorTypePhoneNumber 电话号码 WKDataDetectorTypeLink...选择此值将自动包含添加到这个常量的任何新的检测类型 WKURLSchemeHandler 用来处理WebKit无法处理的URL Scheme类型的资源 开始加载特定资源时调用 - (void)webView
最后通过addSubView添加视图到父视图上面就可以了,这个时候应该是没有加载任何页面的webView。...NSURLRequest requestWithURL:[NSURL URLWithString:@"你所需要加载的网址"]]; 当然考虑项目中可能会对网址进行拼接,如拼接token,因此强烈建议,将后面的...URL构建部分挪到顶上分出来写。...*)navigation withError:(NSError *)error{ NSLog(@"%@-------------------",error); //加载本地的一个空页面的操作...} }else{ [self.navigationController popViewControllerAnimated:YES]; } 可以对H5页面的标题进行判断来决定是否跳转
只用了原生的WKWebView。这里就不具体讲怎么使用WKWebView。 思路: 1.写一个自定义的webVIew继承WKWebView。...3.原生页面的导航栏标题可以取H5的title // 监听title [self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew...5.H5页面的文件名和路径都配置在数据库中。...问题 1.之前和Android讨论把所有的跳转都通过这个方法监听 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...= [navigationAction.request.URL absoluteString]; NSLog(@"url--%@",url); } 但是Android在使用URL Schemes
关于WKWebview白屏,网上罗列的常见原因大致有以下几种: 内存占用比较大时,WebContent Process 会 crash,从而出现白屏现象。 URL网址无效或者含有中文字符。...至于原因2,如果是小程序原生开发的话,页面间的跳转URL包含中文也是能正常跳转的,这个应该是小程序内部兼容了。...根据小程序团队分析过的大部分案例,大图片和长列表图片的使用,都会引起WKWebview被回收[10]。其中长列表页图片是指页面包含数目较大的列表,每个列表里面又引用了图片。...第二页数据过来了,我们把新数据concat到第一页上,此时,listData就包含了第一、第二两个页面的数据。第三页的数据过来了,listData就包含前三个页面的数据。...现在我们不妨停下来想想,目前我们给用户呈现的是第三页的数据,第一页的数据处于不可见的状态,既然不可见,为何不把它丢弃?如果用户往上滑动,需要呈现第一页的数据时,我们可以再请求第一页的数据。
不过苹果在iOS8以后推出了WKWebView来加载Web。UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView是将会逐步取代笨重的UIWebView。...而WKWebView网页加载速度大有提升,占用更少内存。 ...2、wkwebview的本地html页面加载失败 严选app内置了一份网络解决方案,如若检测到无网络状态可以查看这个本地页面进行网络的配置(主要是iOS10系统刚推出的时候,需要用户开启app启动网络的权限才能使用的问题...开发大大排查之后发现是wkwebview中加载的方法变了(wkwebview不支持用loadRequest的方法加载本地的静态HTML),要替换不同的方法来加载,修复之后的效果 3、wkwebview...页面样式问题 在测试过程中,替换wkwebview之后,很多APP内的H5页面样式出现了兼容的问题,尤其是针对iPhone X的适配方面,对此我们只能全局查看各种H5页面,一一检查页面是否错乱,大部分页面的问题都是页面底部或者导航栏异常
领取专属 10元无门槛券
手把手带您无忧上云