移动端(微信)页面 不回弹

目前遇到大致分为两种情况
1.iOS出现键盘后,页面不回弹,如下代码可解决(适合大部分情况)

 if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
          return
        }
        let result = 'pc'
        if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { // 判断iPhone|iPad|iPod|iOS
          result = 'ios'
        } else if (/(Android)/i.test(navigator.userAgent)) { // 判断Android
          result = 'android'
        }
        if (result === 'ios') {
          // window.scroll(0, document.body.scrollHeight)
          // if ('scrollIntoView' in document.activeElement) {
          //   document.activeElement.scrollIntoView()
          // } else {
          //   document.activeElement.scrollIntoViewIfNeeded()
          // }
          document.activeElement.scrollIntoViewIfNeeded(true)
        }

2.写了以上代码,页面也确实回弹了,但是input输入框重新点击,不会聚焦,可考虑虽然页面回弹了,但是实际上页面的元素,input输入框实际位置并不是我们所看见的位置(点击input没有聚焦,可以再屏幕上任何处多点点,就会发现点击某一处,input聚焦了)
以上的代码可换成以下的语句:

window.scroll(0, document.body.scrollHeight)

3.重新聚焦,以下的代码也是可以使用的

let result = 'pc'
        if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { // 判断iPhone|iPad|iPod|iOS
          result = 'ios'
        } else if (/(Android)/i.test(navigator.userAgent)) { // 判断Android
          result = 'android'
        }
        if (result === 'ios') {
          window.scroll(0, document.body.scrollHeight)
          if ('scrollIntoView' in document.activeElement) {
            document.activeElement.scrollIntoView()
          } else {
            document.activeElement.scrollIntoViewIfNeeded()
          }
          // document.activeElement.scrollIntoViewIfNeeded(true)
        }

使页面聚焦的元素出现在我们的可视区内(页面被键盘顶上去,input输入框不在我们的可视区内)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值