IOS微信浏览器点击input元素无反应以及输入框输入后页面不回弹的问题

1.最近在开发微信公众号网页,发现在iOS中,input元素快速点击的时候无法获得焦点,双击或者触摸屏幕的时候才能获取焦点。安卓端没有问题。一开始以为是iOS微信浏览器的兼容问题。后来认真排查了下,发现是我在引入ant-mobile组件库时,同时引入了faskclick.js导致的。下面是ant-mobile官网的介绍:

IOS微信浏览器点击input元素无反应以及输入框输入后页面不回弹的问题_第1张图片

然后我去ant-mobile github上看了下,发现了这个(参考https://github.com/ant-design/ant-design-mobile/issues/576):

IOS微信浏览器点击input元素无反应以及输入框输入后页面不回弹的问题_第2张图片

因此把fastclick去掉就行了。

2.在输入框获取焦点,调出键盘,页面被顶上去。输入完成后,点完成,键盘收起,但是页面不会回弹。可以这么解决:

  isWeiXinAndIos() {
    const ua = `${window.navigator.userAgent.toLowerCase()}`;
    const isWeixin = /MicroMessenger/i.test(ua);
    const isIos = /\(i[^;]+;( U;)? CPU.+Mac OS X/i.test(ua);
    return isWeixin && isIos;
  }

  weChatInputBug() { // 解决微信键盘收起页面不回弹的问题
    let myFunction;
    const isWXAndIos = this.isWeiXinAndIos();
    if (isWXAndIos) {
      document.body.addEventListener('focusin', () => {
        clearTimeout(myFunction);
      });
      document.body.addEventListener('focusout', () => {
        clearTimeout(myFunction);
        myFunction = setTimeout(() => {
          window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
        }, 200);
      });
    }
  }

 

你可能感兴趣的:(IOS微信浏览器点击input元素无反应以及输入框输入后页面不回弹的问题)