移动端Web不安分的小键盘

在进行Webapp开发的过程中遇到了这样的问题——在chrome上模拟很完美的页面,在移动端就变了样子,罪魁祸首就是不安分的小键盘~

Bug再现

我们先看看PC端的表现:

不错不错,这个日历的大小位置都还和符合人类的正常审美
让我们上真机调试一下:

这是一个非常实实在在的bug,对用户体验造成了毁灭性打击!!!

诊断

这个原因很简单,因为上面所用的日期选择器是一个input,不加外接键盘的智能手机和平板电脑在面临这个元素的focus事件的时候都会下意识地掏出他的大宝贝:虚拟键盘~

解决

找到原因,当然要解决它

方法一:readonly

这是input的一个属性,浏览器兼容性很不错
这个属性的作用很简单,顾名思义,让这个input变为只读的。这也就意味着,这个元素的内容不可修改,浏览器看到这个属性就会克制自己掏出小键盘的欲望。
使用方法:
他的用法和disabled属性很相似,可以传值,也可以不赋值

<input type="text" readonly="readonly" />
<input type="text" readonly=true />
<input type="text" readonly />

上面的写法都是ok的
readonlydisabled的区别在于,readonly的元素不能输入,但可以点击;disabled连元素被点击的权利都剥夺了。
**缺点:**在IOS上的Safari浏览器表现似乎有问题,我没有iphone没有办法验证,(待我找一部iphone验证一下,然后更新)

方法二:强行失焦

我们可以看出,当input触发focus之后小键盘才会弹出,那么我们只要趁浏览器“不注意”,先把交点消除就好了。
修改这个input的默认focus事件回调

input.addEventLister("focus",function(){document.activeElement.blur();
});

document.activeElement可以获取页面中被聚焦的元素,然后调用blur失焦就ok了。
(当然也可以采用下面的写法,原理是一样的:

input.addEventLister("focus",function(event){event.target.blur();
});

特殊情况:Element以及各种UI组件库

其实可能有很多小伙伴看出来了,我是直接使用了由饿了么前端团队开发的Element中的组件(是滴,我用了vue)。
这个解决方案就是直接加上属性:editable="false"(这里使用了v-bind的缩写)

<el-date-picker v-model="startDate" type="date" placeholder="预测开始日期" :editable="false">

这一点在官方文档里看得到

虽然我用过的UI库不多,但是大部分都会考虑到这一点,并在文档里说明。与其想无头苍蝇一样到处乱找,不如先仔细看看文档里有没有写到~~

移动端Web不安分的小键盘相关推荐

  1. 移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法...

    1.移动端上拉加载 网上有很多成熟的插件,比如iscroll.在这里介绍一下用jquery和js写的上拉加载方法.使用原生的去写上拉加载更多需要三个高度去做对比,以新闻类列表举例,首先需要整个dom的 ...

  2. 轻松掌握移动端web开发【尺寸适配】常用解决方案

    本文主要针对初学移动端web开发的读者,笔者也是初学者,文中有众多用词不当之处望读者指正. 前言 从开始做web app开发到现在,一直对移动端的尺寸适配有一种模糊的概念.能说得上来'媒体查询','栅 ...

  3. 清除浏览器缓存之后为什么还是显示旧的html页面_H5缓存机制浅析-移动端Web加载性能优化...

    1 H5缓存机制介绍 H5,即HTML5,是新一代的HTML标准,加入很多新的特性.离线存储(也可称为缓存机制)是其中一个非常重要的特性.H5引入的离线存储,这意味着 web 应用可进行缓存,并可在没 ...

  4. 移动端web开发分享

    移动端web开发浪潮兴起之时,千呼万唤shi出来,在团队内部做的一个分享,以下是写ppt时列出的摘要,时间-2013/09/20 I.前端这个行当 a.发展史 b.前端基本技能介绍(html css ...

  5. 移动端 Web 开发踩坑之旅

    前言 最近在一个移动端的 Web 项目中踩了很多的坑,感觉有必要把它们记录下来,分享给即将踏入移动端 Web 开发大门的新人们. 一.从布局说起 移动端的整体布局一般来说可以分为上中下三个部分,分别为 ...

  6. 移动端Web开发小记

    之前为公司商旅频道写移动端的页面时遇到不少问题,今特来个总结,希望能为后来者带来一些帮助. 不再考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此 ...

  7. 移动端Web开发如何处理横竖屏

    <!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...

  8. 移动端WEB开发之响应式布局(响应式开发原理、bootstrap、阿里百秀案例)

    移动端WEB开发之响应式布局 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 设备的划分情况: <!DOCTYPE html> & ...

  9. 视频教程-移动端Web开发-JavaScript

    移动端Web开发 TriAquae开源运维软件创始人,混迹IT运维领域多年,曾就职于松下.国政通.飞信.中金.NOKIA等公司,维护过少至几十台,多至数万台设备的IT系统,致力于提高企业运维自动化水平 ...

最新文章

  1. ubuntu下matplotlib 升级
  2. 算法回顾(三) 二分查找
  3. git commit -m 与 git commit -am的区别
  4. Google Gson的使用方法及JSON 技术对比
  5. 变分自编码器VAE:这样做为什么能成?
  6. 三件套都有什么_床上用品三件套、四件套、21件套都各指什么啊?
  7. FFMPEG源码分析(二)
  8. @description iPhoneX炫彩渐变背景实现
  9. CSerialPort串口类最新修正版(解决关闭死锁问题)
  10. tomcat启动成功 未加载项目_新里程|尚品食品国际贸易合伙人项目成功启动
  11. Tcpdump命令学习
  12. logstash grok切分nginx日志
  13. php发卡v6_GitHub - Cghang/vfkphp: V发卡 完全开源免费的个人自动发卡解决方案
  14. win10摄像头无法使用黑屏的解决办法
  15. DFD数据流图的基本要素及易错点详细介绍
  16. LinkedIn高级分析师王益:大数据时代的理想主义和现实主义
  17. 微信企业号加密异常处理:InvalidKeyException
  18. upc 去除干员 (delete)
  19. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能
  20. Unity游戏动画 从入门到住院 1

热门文章

  1. 国内首家免费企业级私有镜像库 有容云AppHouse震撼来袭
  2. Ax=b有容的极小范数解
  3. uoni扫地机器人好用吗_由利Uoni扫地机器人V980 MAX好用吗?详细测评告诉你
  4. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询
  5. c#实现钉钉免登功能
  6. 计算机科学与技术万金油专业,盘点工学大类里的“万金油”专业
  7. 安卓模拟器对应键盘快捷键
  8. 西电软工oop面向对象程序设计实验二上机报告
  9. 利用计算机得到阻尼振动曲线的包络线公式,波尔共振实验阻尼系数的计算机拟合...
  10. 阻尼振动与无阻尼电磁振动(大学物理笔记)