vue项目在ios的webview中页面留白,点击消失解决方案

问题描述

进入A页面——>B页面——>ios自带的返回——>白屏出现——>手动点击白屏处——>问题解决

原因分析:

在ios机器上使用webview开发Vue项目时候,go history(-1), 无法将body的高度拉掉,使得遮住,触发轻点击,方可消除遮罩

解决的理论:

用于最重要的html 容器是container,然而因为设置html、body高度是100%,从而造成了 container 撑开父级,但浏览器默认滚动的scroll 并不是 container(可能我这里认识是错的),而是body,某些因素,造成返回history 后,无法复原(ios 的锅),为此,我们将 container 进行了绝对定位,并让它重新成为 scroll 的对象,从而解决问题

解决方案:

html, body {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    position: relative;
}
#app {
    width: 100%;
    height: 100%;
    overflow: scroll;
    -webkit-overflow-scrolling: touch;
	position: absolute;
	left:0;
	top:0;
	padding-bottom: .9rem;
}

vue路由跳转处理:

//路由跳转新页面 默认显示在最顶端
 
 
router.afterEach((to, from, next) => {
 
 
window.scrollTo(0, 0);
 
 
});

这样就可以完美解决,
但是,
当有一次结合keep-alive,beforeRouteEnter做数据缓存需求的时候发现,#app的overflow: scroll;属性导致页面滚动条有问题,设置的window.scrollTo(0, 0);不起作用,
解决办法:

router.afterEach((to, from, next) => {
	window.scrollTo(0, 0);
	document.getElementById("app").scrollTop = 0;
});
 

这样就可彻底解决两个问题了!欧耶!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值