微信下输入法在IOS和安卓下的诡异
1.验证window.innerHeight
| 系统版本 | iOS9.1.1 | 安卓4.4.4 |
| 没有输入法的情况下 | 504 | 567 |
| 有输入法的情况下 | 208 | 273 |
看来两者的window.innerHeight都不包括输入法的那部分。
也验证了当输入法弹起来的时候,$('#id').css("bottom")都是相对输入法上面区域来定位的,也就是window.innerHeight来定位的。
2.验证window.outerHeight
| 系统版本 | iOS9.1.1 | 安卓4.4.4 |
| 没有输入法的情况下 | 0 | 1134 |
| 有输入法的情况下 | 0 | 545 |
IOS不支持outerHeight属性,郁闷!
3.验证(document.documentElement||document.body).clientHeight
| 系统版本 | iOS9.1.1 | 安卓4.4.4 |
| 没有输入法的情况下 | 504 | 567 |
| 有输入法的情况下 | 504 | 273 |
看来两者的又有差异,IOS下clientHeight包括输入法部分,安卓不包括clientHeight部分。
4.验证元素的高度变化,例如:$('#id').css("height"); //节点的文档高度,绝对定位,按照bottom来确定位置的。
| 系统版本 | iOS9.1.1 | 安卓4.4.4 |
| 没有输入法的情况下 | 353px | 408px |
| 有输入法的情况下 | 353px | 114px |
可以见得:有无输入框法,ios下高度没有变化,安卓就非常好的适应了,这是个IOS下的bug哦。
验证上面元素内部元素的高度变化趋势(内部元素高度是动态变化的),例如:$('#innerid').css("height");
iOS9.1.1:311px----663px----929px---1195px;
安卓4.4.4:357px---573px----870px---1192px;
可以见得:变化都是趋势是OK的。
5.这会导致神马问题了?
在IOS下,当输入法推上去的时候,页面的内容也回推上去,内容只有window.innerHeight高度的内容了,又由于clientHeight没有变化,而输入框就占领了一部分。
同时页面元素的高度没有变化,导致元素的滚动条展开不了,那么必然会失去一部分内容,失去的内容的高度就是输入法的高度。
解决之道:
第一步:$('#id').css("height",window.innerHeight); //把元素的高度设置为window.innerHeight
第二步:由于内容是向上消失的,所以要用元素的top定位。
var inputHeight = (document.documentElement||document.body).clientHeight-window.innerHeight; //输入法的高度
$('#id').css('top',inputHeight);
动作对UI的渲染太大,用setTimeout来延迟执行。
目前搞到的就是这些,有什么牛B的好办法就好了。
微信下输入法在IOS和安卓下的诡异的更多相关文章
- cocos2dx jsb 在IOS与安卓下的一些不同之处
cocos2dx版本 2.1.4 1:字体大小 cocosbuilder publish后应该注意IOS和安卓目录下的字体文件的规格是否齐全: 2:cc.LabelTTF 在ios下,cc.Label ...
- (转)获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...
- 判断终端是ios还是安卓的一些妙用(附加微信分享图标修改)
最近遇到一个项目 要求有两个icon(就是下载地址 下载安卓的apk 和ios的安装包) 一开始的方案是 什么设备都显示这两个icon 但是后来老大说这样不好 安卓用户给他下载ios 也不行 ...
- 微信分享—ios和安卓机制居然不一样!
实际项目中,在做微信分享追踪的时候,遇到了一个百思不得其解的问题. 在加入了用户分享追踪功能之后,页面已经加载完成的情况下,安卓分享功能没有任何问题,ios却总是分享失败. 关于ios和安卓设备的差 ...
- iosselect:一个js picker项目,在H5中实现IOS的select下拉框效果
具体文档和demo可以访问github:https://github.com/zhoushengmufc/iosselect 移动端浏览器对于select的展示样式是不一致的,ios下是类似原生的pi ...
- U3D安卓下OnApplicationQuit不执行的解决方法
安卓下当你按Home键,程序会进入暂停状态.所以只能改成调用OnApplicationPause. Unity论坛上说实现IDispose接口也可以,似乎IOS可以,但安卓测试了,无效.
- 微信小程序禁止下拉_解决小程序下拉出现空白的情况
微信小程序禁止下拉 在微信小程序中,用力往下拉动,页面顶部会出现一段空白的地方. 产品的需求不太允许这么做,会影响用户体验,查看文档发现可以使用enablePullDownRefresh这属性来实现, ...
- 微信小程序实现上拉和下拉加载更多
在上一篇文章中,我们知道了使用 scroll-view 可以实现上拉加载更多,但是由于 scroll-view 的限制,它无法实现下拉加载更多,这篇文章我们使用 view 组件来实现 上拉和下拉加载更 ...
- IOS客户端UIwebview下web页面闪屏问题
基于ios客户端uiwebview下的web页面,在其内容高度大于视窗高度时,如果点击超过视窗下文档的底部按钮,收缩内容高度,会发生闪屏问题. 外因是由文档的高度大于视窗的高度所致,本质原因未知. 解 ...
随机推荐
- Ubuntu14.04安装MySql
我们要确保Ubuntu14.04的服务器是可以上网的,这里我就不操作,这个比较简单.由于我的服务器是用Cobbler部署的,所以要更改源. # vi /etc/apt/source.list 我这 ...
- 让nodeJS支持ES6的词法----babel的安装和使用
要使用Babel, 我们需要nodeJS的环境和npm, 主要安装了nodeJS, npm就默认安装了 , 现在安装nodeJS很简单了, 直接下载安装就好了: 安装es-checker 在使用Bab ...
- LightOJ 1341 唯一分解定理
Aladdin and the Flying Carpet Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%lld &a ...
- lucene-查询query->PhrasePrefixQuery使用短语缀搜索
PhrasePrefixQuery与Phrase有些类似.在PhraseQuery中,如果用户想查找短语“david robert”,又想查找短语“mary robert”.那么,他就只能构建两个Ph ...
- Web前端性能优化教程06:减少DNS查找、避免重定向
本文是Web前端性能优化系列文章中的第六篇,主要讲述内容:减少DNS查找.避免重定向.完整教程可查看: 一.减少DNS查找 基础知识 DNS(Domain Name System): 负责将域名UR ...
- UITextView实现placeHolder方法汇总
UITextField中有一个placeholder属性,可以设置UITextField的占位文字,起到提示用户的作用.可是UITextView就没那么幸运了,apple没有给UITextView提供 ...
- const、static、extern三个关键字
默认情况下,C语言的全局变量是全世界都可以访问的,也就是全局变量可以跨文件访问. extern可以引用全局变量 例如,如果有一个全局变量int money = 100;extern int money ...
- Scala 递归学习的例子
为了学习Spark,我开始了学习Scala.加油! 递归的一个题目: 代码: // Why x is Float, but when we use 3.0 for example, it return ...
- 【学习笔记&训练记录】数位DP
数位DP,即对数位进行拆分,利用数位来转移的一种DP,一般采用记忆化搜索,或者是先预处理再进行转移 一个比较大略的思想就是可以对于给定的大数,进行按数位进行固定来转移记录答案 区间类型的,可以考虑前缀 ...
- bzoj1113: [Poi2008]海报PLA
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...