zoukankan      html  css  js  c++  java
  • input 输入框又被输入法遮挡啦

    在安卓手机端,input 输入框被输入法遮挡出现的机率几乎是 100%。如果领导们不在意,我们就睁一只眼闭一只眼。但如果要认真起来解决问题,却发现并不是很容易,然而今天并不是来倒苦水的,直接进入正题。

    我们先看看 iPhone 的优异表现:

    他苹果婊能做到,我们安卓鸡怎么不行?

    默默无闻 focusin

    当一个元素聚焦时会出发 focusin 事件,可以把它看作是可以冒泡的 focus event。

    要的就是冒泡

    安卓鸡的春天

    有了focusin,再也不用干单独处理每一个 input 输入框这种体力活儿了。上代码:

    const isIos = /iphone|ipod|ipad/i.test(navigator.appVersion)
    
    // 苹果会自动将 input 滚动到可见视口内
    if (isIos) return;
    
    document.documentElement.addEventListener('focusin', e => {
      // 只处理 input 元素
      if (e.target.tagName.toLowerCase() !== 'input') return;
    
      // 无法确定输入法的弹窗什么时候会弹出来,这里通过4次循环(共2秒)将 input 滚动到可见视口内
      const scrollToView = (count) => {
          if (count >= 4) return clearTimeout(this.__timerId);
    
          this.__timerId = setTimeout(() => {
            this.$refs.bookInputRef.scrollIntoView({behavior: "smooth", block: "center", inline: "nearest"});
            scrollToView(count + 1)
          }, 500)
        }
    
        scrollToView(0);
    })
    
  • 相关阅读:
    不知道是不是爬虫
    springCloud 搭建Eureka
    HttpsUtils
    java验证
    复选框值存数据库 存取问题
    Oracle VM VirtualBox 无法链接本地
    ssh 无法查询数据库
    CSS 分割线
    vue+Element 表格编辑
    数组,对象的深拷贝 与 浅拷贝
  • 原文地址:https://www.cnblogs.com/fayin/p/13273286.html
Copyright © 2011-2022 走看看