移动端判断键盘弹出和收起

根据键盘的展开和收起我们可以判断页面的可视区域的高度来操作,具体代码是这样的

    const originHeight = document.documentElement.clientHeight || document.body.clientHeight;
    window.addEventListener(‘resize‘, () => {
      const resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
      if (resizeHeight < originHeight) {
        console.log(‘键盘弹起‘)
      } else {
        this.$refs.input.blur()
          console.log(‘键盘关闭‘)
      }
    }, false);

通过判断页面的高度我可以可以处理一下问题

1. 当键盘收起的时候让表单失去焦点(注:iOS键盘收起表单会自动失去焦点,但是安卓键盘收起并不会让表单失去焦点)

2. 当键盘展开时让页面滚动,防止内容被遮挡起来导致页面无法操作

解决了表单的失去焦点问题,其实表单还有一个问题就是,需要让input滚动到可视区域,方便用户正常输入,可以使用下面代码解决

    window.addEventListener(‘resize‘, function() {
      if(
        document.activeElement.tagName === ‘INPUT‘ ||
        document.activeElement.tagName === ‘TEXTAREA‘
      ) {
        window.setTimeout(function() {
          if(‘scrollIntoView‘ in document.activeElement) {
            document.activeElement.scrollIntoView();
          } else {
            document.activeElement.scrollIntoViewIfNeeded();
          }
        }, 0);
      }
    });

原文地址:https://www.cnblogs.com/wuxianqiang/p/10538757.html

时间: 2024-08-29 15:02:34

移动端判断键盘弹出和收起的相关文章

js 监听手机端键盘弹出和收起事件

//这里区分不同系统,可以参考之前的文档记录 https://www.cnblogs.com/wind-wang/p/10737110.html const ua = typeof window === 'object' ? window.navigator.userAgent : ''; let _isIOS = -1; let _isAndroid = -1; export function isIOS() { if (_isIOS === -1) { _isIOS = /iPhone|iP

移动端 软键盘 弹出时 影响布局

移动端 软键盘 弹出时 会影响布局 1)前段时间作的移动端页面,因为高度只有1页所以用了height:100%;width:100%; ios下点击输入框弹出软键盘时,布局没有大影响. 当输入框可能被软键盘压到时,在一部分安卓下却出了问题,华为自带浏览器和UC会有布局上的问题. 原因可能是因为,软键盘弹出时,改变了height,使height:100%,不能达到原来的高度. 解决办法: $(document).ready(function () { $('body').height($('bod

移动端监控软键盘弹出、收起事件

1.原理: 根据可视化窗口的改变来判断 var winHeight = $(window).height(); //获取当前页面高度 $(window).resize(function () { var thisHeight = $(this).height(); if ( winHeight - thisHeight > 50 ) { //键盘弹出 } else { //键盘收起 } })

安卓移动端软键盘弹出问题解决方案

移动端开发难免拿到输入框居中或者位于底部的情况,ios 端,软键盘能够按正常预期向上滑动(这里有个问题,当 input 聚焦时,弹出软键盘,input 上滑,此时屏幕是具有滚动效果的,还没找到合适的解决方案),Android 端,并不会滑动,通常做法是设置 window.scrollTo(0, virtualKeyboard.Height), 但是如果你的 input 所在的 div 是绝对定位的话,window.scrollTo 这个事件是监听不到的,这里给出另一套解决方案 self.refs

【apicloud问题解决记录】键盘弹出监听处理以及头部底部的黑色闪屏现象

http://blog.csdn.net/kongjiea/article/details/46545351 移动端解决fixed和input获取焦点软键盘弹出影响定位的问题 使用apicloud开发中并不存在这个问题,input进行焦点获取,页面会自动压缩 apicloud,使用api.openWin()打开win框架后,如果bounces:true会出现向下拉和向上拉黑屏和闪屏现象. 打开openWin({bounces:false}),再在win里面打开frame框架 以下面新浪新闻页为例

移动端点击文本框 键盘弹出解决访问

当我们做h5的时候,经常会遇到键盘弹出遮挡文本框的情况,这里区分IOS和安卓, 在IOS中,IOS会在键盘弹出后自动将文本框上移,避免文本框被键盘挡住,但是在收起键盘的时候 在vue中会导致页面的卡死,这个时候我们可以用 document.body.scrollIntoView(false) 来手动让页面重新渲染,因为IOS收起键盘后,会触发当事文本框的blur事件,所以我们可以给文本框添加该事件. 在安卓中,通常会出现键盘把文本框遮挡住的情况,我们可以监听文本框的focus事件,当文本框foc

iOS 模拟器键盘弹出以及中文输入

1.虚拟键盘的弹出与收起切换: 快捷键:command+shift+K 2.中文输入: Xcode 菜单项 --> Product --> Scheme --> Edit Scheme -->  Run --> Option --> Application Region 设置为 『中国』 重新运行程序,如下图所示就可以切换输入法了

键盘的出现于隐藏(解决键盘弹出时会覆盖文本框的问题,代码实现)

#import "ViewController.h" #import "UIView+FrameExtension.h" // 可以自己写,以后用着方便 #define kDeviceHeight [UIScreen mainScreen].bounds.size.height @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super v

【转】swift实现ios类似微信输入框跟随键盘弹出的效果

swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么这是怎么实现的呢,也许你会说直接在键盘弹出的时候把输入框也向上移动不就行了?但是我使用这种方法的时候,发现效果十分不理想,会有明显的滞后现象,原因有以下几点: 键盘弹出动画并不是匀速,键盘和输入框的时间曲线不完全一致,运动不同步 各种键盘的高度不一样(比如