加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

可能这些是你想要的H5软键盘兼容方案

发布时间:2019-04-26 02:17:25 所属栏目:建站 来源:wuwhs
导读:副标题#e# 前言 最近一段时间在做 H5 聊天项目,踩过其中一大坑:输入框获取焦点,软键盘弹起,要求输入框吸附(或顶)在输入法框上。需求很明确,看似很简单,其实不然。从实验过一些机型上看,发现主要存在以下问题: 在 Android 和 IOS 上,获知软键盘弹起

其实这是 Apple 在 IOS 的 bug,会出现在所有的 Xcode10 打包的 IOS12 的设备上。微信官方已给出解决方案,只需在软键盘收起后,将页面(webview)滚回到窗口最底部位置(clientHeight位置)。修复后的上面表单输入 demo 可以戳这里:

  1. console.log('IOS 键盘收起啦!');  
  2. // IOS 键盘收起后操作  
  3. // 微信浏览器版本6.7.4+IOS12会出现键盘收起后,视图被顶上去了没有下来  
  4. var wechatInfo = window.navigator.userAgent.match(/MicroMessenger/([d.]+)/i);  
  5. if (!wechatInfo) return;  
  6. var wechatVersion = wechatInfo[1];  
  7. var version = (navigator.appVersion).match(/OS (d+)_(d+)_?(d+)?/);  
  8. if (+wechatVersion.replace(/./g, '') >= 674 && +version[1] >= 12) {  
  9. window.scrollTo(0, Math.max(document.body.clientHeight, document.documentElement.clientHeight));  
  10. }  

兼容第三方输入法

上面说了那么多,其实已经把 H5 聊天输入框的坑填了一大半了,接下来就先看下聊天输入框的基本HTML结构。

  1. <div class="chat__content">  
  2.   <div>  
  3.     <p>一些聊天内容1</p>  
  4.   </div>  
  5.   <!-- 省略几千行聊天内容 -->  
  6. </div>  
  7. <div class="input__content">  
  8.   <div class="input" contenteditable="true"></div>  
  9.   <button>发送</button>  
  10. </div> 

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读