IOS内嵌H5页面,返回出现半截白屏问题及解决方案

37 篇文章 0 订阅

场景: 【ios内嵌加载h5页面】

A页面加载数据 ---> 跳转B页面后返回  --->  返回A页面会显示一部分白屏,随意滑动页面后,页面显示完整(android下没事)

分析:  可能跟ios回弹效果,组件有关系,iOS WebView加载网页触摸白屏bug排查;    附上VUE-ISSUES

解决方案:

方案三:(测试未起效果)

html, body {
  position: relative;
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}


#app {
  position: absolute;
  left:0;
  top:0;
  width: 100%;
  height: 100%;
  background: #fff;
  overflow: scroll;
  -webkit-overflow-scrolling: touch;
}


#app > * {
  transform: translateZ(0px)
  -webkit-transform: translateZ(0px)
}

方案二:(有效果但不适用于滚动加载)

在数据请求接口完成后,添加如下代码


// 模拟回到顶部
this.$nextTick(() => {
  window.scrollTo(0, 1); 
  
  window.scrollTo(0, 0);
})



// 举例
async getDeductionList () {
  try {
    const res = await this.post(url, {page: 1})
    const { code, list } = res.data

    if (code === 200') {
      // 非滚动加载
      this.deductionList = list
      this.$nextTick(() => {
        window.scrollTo(0, 1);
        window.scrollTo(0, 0);
      })




      // 滚动加载
      this.page++
      this.deductionList = [...this.deductionList, ...list]
      if (this.page === 1) {
        this.$nextTick(() => {
          window.scrollTo(0, 1);
          window.scrollTo(0, 0);
        })
      }
    }
  } catch (error) {
    console.log(error)
  }
}



// 滚动加载
scrollLoad () {
  this.getDeductionList()
}

方案一:(使用中, 简单粗暴)

History.scrollRestoration


定义:允许web应用程序在历史导航上显式地设置默认滚动恢复行为


参数值:
1. auto 将恢复用户已滚动到的页面上的位置
2. manual 未还原页上的位置。用户必须手动滚动到该位置



// 通过路由守卫,判断设置manual
router.beforeEach((to, from, next) => {
  if (history.scrollRestoration) {
    history.scrollRestoration = 'manual'
  }
})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值