zoukankan      html  css  js  c++  java
  • H5页面移动端IOS键盘收起焦点错位

    出现场景:IOS端,在弹出层点击input时调起键盘页面会被顶上去document.body.scrollOffset大于0,收起键盘时scrollOffset不变,造成焦点错位。

    注:安卓手机点击时调起键盘不会把页面顶上去,会改变窗口高度变化,收起时不会造成影响。

    jq处理:

    1 $('input').on('blur', function (event) {
    2   if (!(event.relatedTarget && event.relatedTarget.tagName)) document.body.scrollTop = 0;
    3 });

    vue处理:

    1、判断移动端设备

     1 //判断 IOS 或者 Android
     2 let u = window.navigator.userAgent;
     3 //IOS终端
     4 let isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);
     5 //android终端
     6 let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
     7 //IOS
     8 if(isiOS) return "IOS";
     9 //Android
    10 if(isAndroid) return "Android";

    2、回归原本高度

     1 let type = "当前机型";//Android or IOS
     2 let isReset = true;//是否归为
     3 if (type === 'IOS') {
     4     document.body.addEventListener('focusin', () => {
     5         //软键盘弹出的事件处理
     6         isReset = false;
     7     });
     8     document.body.addEventListener('focusout', () => {
     9         //软键盘收起的事件处理
    10          isReset = true;
    11          setTimeout(() => {
    12              //当焦点在弹出层的输入框之间切换时先不归位
    13              if (isReset)    window.scroll(0, 0);//失焦后强制让页面归位
    14          }, 100);
    15      });
    16  } else if (type === 'Android') {
    17      window.onresize = function () {
    18          //键盘弹起与隐藏都会引起窗口的高度发生变化
    19          let resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
    20          if (resizeHeight < h)    isReset = false;
    21          else {
    22              isReset = true;
    23              setTimeout(() => {
    24                   if (isReset)    window.scroll(0, 0);//失焦后让页面归位
    25               }, 100);
    26           }
    27       }
    28   } 
  • 相关阅读:
    N^N hdu1060
    二叉树的所有操作
    溢出问题
    POJ1562深搜问题
    已知前序,中序,求后序
    交换a,b
    深度和广度优先搜索
    最长回文子串
    scanf
    WCF Ria Service 理解
  • 原文地址:https://www.cnblogs.com/lyzw-Y/p/10783933.html
Copyright © 2011-2022 走看看