ios12以上微信内置浏览器键盘回收后空白问题处理

本文探讨了在iOS12以上微信内置浏览器中,表单提交按钮被透明遮罩遮挡的问题。通过分析,发现此现象仅在特定条件下出现。解决方案为在input失去焦点时,对页面进行轻微滚动,以移除遮罩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:公司项目,表单提交页面,如下图所示,在输入框输入内容后,点击底部提交按钮,事件没有触发
在这里插入图片描述
问题本质:ios12以上(目前),微信内置的浏览器在键盘回收后会留下一个透明的遮罩(个人猜想,没法验证),遮挡了页面底部,没法点击到提交按钮。在每次拖拽页面滚动后,页面又是可以点击提交的,所以这个bug可以通过滚动页面是兼容这个bug。
处理方式:既然已经明确了问题的原因,处理方式其实就是滚动下页面就能处理。
处理思路:监听input失去焦点事件,然后判断系统,如果是ios系统则页面向上滚动1px然后再向下滚动1px,移除键盘回收后留下的bug

//失去焦点事件后触发
  let ua = window.navigator.userAgent;
    //判断系统
      if (!!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
        //ios系统
        let currentPosition, timer;
        let speed = 1;
        timer = setInterval(function () {
          currentPosition =
            document.documentElement.scrollTop || document.body.scrollTop;
          currentPosition -= speed;
          window.scrollTo(0, currentPosition); //页面向上滚动
          currentPosition += speed;
          window.scrollTo(0, currentPosition); //页面向下滚动
          clearInterval(timer);
          // alert("失去焦点")
          console.log("失去焦点")
        }, 100);
      }

问题总结:该问题比较难定位,测试的时候安卓手机,ios的safri浏览器都是可以的,低版本的ios系统也是没有问题的,并且ios微信内置浏览器也是偶尔出现,只要ios12以上的微信内置浏览器才会出现,都不是很明确问题原因,这个过程最麻烦。项目开发中,兼容的问题是一大问题。遇到类似的问题,要多尝试,多测试,多上网查相关的资料。
资料:https://www.jianshu.com/p/a57946771c4d

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值