最近遇到一个问题,WKWebview在加载HTML的时候会白屏卡顿一段时间,网速差的时候可能会白屏10秒左右。
通过抓包发现是前端页面调用一个JS脚本获取IP地址导致的“https://api.ipify.org/?format=jsonp&callback=getIP”。
但是查看源码发现该脚本通过<script>标签实现,并且设置了async属性,按理说不会阻塞主线程,且在Android和系统的Safari上都不会出现阻塞UI的问题。
进一步在代码中排查,最终发现了问题所在,如下图
问题出现的代码因为之前有部分网页加载失败所以为WKWebViewConfiguration设置了suppressesIncrementalRendering属性为true,该属性是布尔值,决定Web视图内容在完全加载到内存前是否显示,默认为NO,即边加载边显示。例如,Web视图中有文字和图片,会先显示文字后显示图片。设置该属性后webView的script标签的async属性失效。
网友评论