【移动端web】软键盘兼容问题

软键盘收放事件

这周几天遇到了好几个关于web移动端兼容性的问题。并花了很长时间去研究如何处理这几种兼容问题。

这次我们来说说关于移动端软键盘的js处理吧。

一般情况下,前端是无法监控软键盘到底是弹出来还是关闭的。能使用的一般是输入框获取焦点事件(focus)与输入框失去焦点事件(blur)。

ios设备下,点击输入框,输入框获取了焦点,便会弹出软键盘;软键盘关闭后,输入框也能失去焦点。这点在ios下是没什么问题的。也可通过此方法来处理键盘相关问题。

但在安卓设备下,点击输入框,输入框获取了焦点,弹出软键盘没问题,但是我们关闭软件盘时,其实输入框的焦点并不会失去。因此,此方法不适合安卓。因此要使用resize。

一句话:ios使用focus、blur处理全部软键盘事件,安卓部分可处理,但可加上window的resize事件监听软键盘的打开与关闭。

点击输入框后的处理:

点击其他节点或ios关闭软键盘的处理:

安卓下,这样就能判断软键盘的收放状态了。

而ios软键盘收放不会触发resize方法,说明,ios软键盘弹出不会改变页面的高度,安卓可以。因此能解决。

软键盘问题后续加入~~

原文地址:https://www.cnblogs.com/wuhairui/p/9093550.html

时间: 2024-08-30 14:22:53

【移动端web】软键盘兼容问题的相关文章

#h5软键盘兼容方案

h5软键盘兼容方案 本人在做公司项目的时候,在h5上调用键盘,发现了许多问题,主要问题总结如下 1.在 Android 和 IOS 上,键盘弹出收起在页面 webview 里表现不同. // 判断设备类型 var judgeDeviceType = function () { var ua = window.navigator.userAgent.toLocaleLowerCase(); var isIOS = /iphone|ipad|ipod/.test(ua); var isAndroid

前端angularJS利用directive实现移动端自定义软键盘的方法

最近公司项目的需求上要求我们iPad项目上一些需要输入数字的地方用我们自定义的软键盘而不是移动端设备自带的键盘,刚接到需求有点懵,因为之前没有做过,后来理了一下思路发现这东西也就那样.先看一下实现之后的效果: 实现的效果就是当点击页面中需要弹出软键盘的时候软键盘弹出,浮在页面的中间,和模态框一样的效果,可以在软键盘中输入任何数字,附带的功能有小数点.退格.清空.确定等功能.当在键盘上点击数字的时候页面中的表单中实时的添加对应的数字,上图中可以看到. 产品经理那边给的原因是iPad屏幕本来就小,如

移动端定制软键盘样式 配置input属性的type属性

1.当你的input输入的数据为链接地址时type属性可改为 type=url 最下面一栏就会出现.com 提高用户体验 2.当你的input输入的数据为email时type属性可改为 type=email 最下面一栏就会出现@符号 3.当你的input输入的数据为电话时type属性可改为 type=tel 软键盘就会显示这个样子. 4.当你的input输入的数据为电话时type属性可改为 type=number 显示介个样子

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

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

移动端Android软键盘遮住输入框解决!

在使用vue的情况下,在输入框中添加 <textarea class="textarea" @click="isAndroid" :maxlength="30" :rows="1" placeholder="订单备注(30字以内)" v-model="remark"></textarea> isAndroid(){if(/Android [4-6]/.test(n

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

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

移动端软键盘收起监听

在移动端进行表单操作时,时常需要监听键盘的收起,从而完成输入的处理.但浏览器并没有提供直接监听软键盘收起的接口,那该如何进行监听能?这里提供监听的兼容方案. 在安卓下,大部分浏览器在软键盘收起时,会触发resize事件,可以以此来监听:但ios操作系统并不会触发该事件,但大部分浏览器会触发表单的blur事件,所以可以以此为监听点.浏览器的软件盘监听状况如下表所示:   软键盘收起事件监听表 所以,通过监听onResize.onBlur可以实现移动端主流浏览器的软键盘收起操作:无法即时监听到的,可

移动端界面devicePixelRatio问题与移动端软键盘keyCode

现在移动端颗粒度越来越小,所以清晰度很高,如华为p9的devicePixelRatio为4, 这是有多变态,devicePixelRatio是物理像素/逻辑像素=倍率devicePixelRatio,所以 如倍率为4,一个像素在设备上放大了4倍,所以真实4像素是很难在设备上展示出现的, 只能使用缩放等手段去实现,这就像为什么1px边框很难在设备实现一样,现在设备都是 倍率为2,所以经常在网上看到缩小0.5的css方式,这也是为什么经常可以看到一些UI设计图 会有@3x\@2x等图片设计,因为兼容

JS移动端如何监听软键盘回车事件

移动端经常项目中会有搜索之类的功能,一般实现的是按搜索按钮进行搜索,如果要像PC端一样实现按回车键进行搜索该怎么实现呢? 方法很简单,就是在搜索框的input外面套一个form标签  注意点:form标签一定得添加 action属性(可设置为空) <form action=""><input type="text" name="search" /></form> 移动端软键盘的回车会触发form的submit事