ios加载本地html文件白屏时间过长,iOS WebView加载网页触摸白屏bug排查及修复

这篇博客介绍了在iOS 10、11系统上,使用WebView加载本地html文件时遇到的触摸后白屏问题。问题出现在添加了-webkit-overflow-scrolling: touch;样式后,作者通过排查发现body元素和中间滚动部分同时设置了该属性,可能导致分层绘制时机错开。移除body上的-webkit-overflow-scrolling或将其改为overflow: hidden解决了问题。建议避免在body以外的地方使用-webkit-overflow-scrolling。
摘要由CSDN通过智能技术生成

最近兄弟团队给提了一个bug,说他们iOS端的网页,触摸后很大几率出现白屏,一开始我是很不信的,后面本地调试竟然更高概率发生。

首先,系统是iOS10、11,网页是高度100%,中间部分越界滚动的一个常规效果,框架vue,不过感觉bug和vue关系不大,大概结构如下:

由于希望得到平滑点的滚动,在中间滚动部分加了

.page-content {

-webkit-overflow-scrolling: touch;

overflow-x: hidden;

overflow-y: auto;

...

}

本来表现很正常的东西,突然出现白屏,而且是页面触摸就白屏,测试了好几部手机,个别是白屏后一直白着,个别是白屏后过半秒左右又自动恢复正常,有些不解,但看样子有点像是重绘或者重排导致的。

网上找到类似介绍如下:

webkit在绘制页面时会将结构分为各种层,当层足够大时就会变成很大的平铺层。这样一来webkit在每次页面结构发生变化时不需要都渲染整个页面而是渲染对应层了,这对渲染速度来说相当的重要。webkit会给各种层分配一定大小的“后备存储器”在内存里缓存起来,这就是绘制层的上下文,通过这个上下文就可以很容易的实现各种效果(动画,3D变换等),“后备存储器”内存占用大小不仅依层而定,跟设备和显示方式也是有关的,假设这在普通屏幕下是1:1的,但在Retina屏幕下则是1:2的,并且放大时这个量会成倍增加;一张图片是10X10,普

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值