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和安卓下的诡异的更多相关文章

  1. cocos2dx jsb 在IOS与安卓下的一些不同之处

    cocos2dx版本 2.1.4 1:字体大小 cocosbuilder publish后应该注意IOS和安卓目录下的字体文件的规格是否齐全: 2:cc.LabelTTF 在ios下,cc.Label ...

  2. (转)获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓

    在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...

  3. 判断终端是ios还是安卓的一些妙用(附加微信分享图标修改)

    最近遇到一个项目 要求有两个icon(就是下载地址 下载安卓的apk  和ios的安装包) 一开始的方案是 什么设备都显示这两个icon 但是后来老大说这样不好   安卓用户给他下载ios 也不行  ...

  4. 微信分享—ios和安卓机制居然不一样!

     实际项目中,在做微信分享追踪的时候,遇到了一个百思不得其解的问题. 在加入了用户分享追踪功能之后,页面已经加载完成的情况下,安卓分享功能没有任何问题,ios却总是分享失败. 关于ios和安卓设备的差 ...

  5. iosselect:一个js picker项目,在H5中实现IOS的select下拉框效果

    具体文档和demo可以访问github:https://github.com/zhoushengmufc/iosselect 移动端浏览器对于select的展示样式是不一致的,ios下是类似原生的pi ...

  6. U3D安卓下OnApplicationQuit不执行的解决方法

    安卓下当你按Home键,程序会进入暂停状态.所以只能改成调用OnApplicationPause. Unity论坛上说实现IDispose接口也可以,似乎IOS可以,但安卓测试了,无效.

  7. 微信小程序禁止下拉_解决小程序下拉出现空白的情况

    微信小程序禁止下拉 在微信小程序中,用力往下拉动,页面顶部会出现一段空白的地方. 产品的需求不太允许这么做,会影响用户体验,查看文档发现可以使用enablePullDownRefresh这属性来实现, ...

  8. 微信小程序实现上拉和下拉加载更多

    在上一篇文章中,我们知道了使用 scroll-view 可以实现上拉加载更多,但是由于 scroll-view 的限制,它无法实现下拉加载更多,这篇文章我们使用 view 组件来实现 上拉和下拉加载更 ...

  9. IOS客户端UIwebview下web页面闪屏问题

    基于ios客户端uiwebview下的web页面,在其内容高度大于视窗高度时,如果点击超过视窗下文档的底部按钮,收缩内容高度,会发生闪屏问题. 外因是由文档的高度大于视窗的高度所致,本质原因未知. 解 ...

随机推荐

  1. Android Toast效果设置

    Android Toast效果设置 Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.总 ...

  2. 怎么学习AOPR使用方法

    Advanced Office Password Recovery作为一款专业级别的Office密码破解工具,对十几种office文档的密码都可以有效的破解.一些用户朋友才开始接触Advanced O ...

  3. 让Chrome支持Ajax/$http方式读取本地文件

    在开发中经常写些小demo调试一下插件什么的 数据源又经常手动构造分离为一个单独的文件.用ajax或$http去访问时总是拒绝访问.这个时候可以给Chrome的快捷图标加启动参数,让浏览器允许js访问 ...

  4. js json 对象相互转换

    字符串转对象(strJSON代表json字符串)   var obj = eval(strJSON);   var obj = strJSON.parseJSON();   var obj = JSO ...

  5. 【CodeForces 699A】Launch of Collider

    维护最新的R,遇到L时如果R出现过就更新答案. #include <cstdio> #include <algorithm> using namespace std; int ...

  6. 检测是否是IE浏览器

    浏览器识别版本方法 //使用说明返回的是一个对象{"browser":"[IE]...","version":"11.0" ...

  7. Visual Studio版本号对应表

    从一个外行角度看,VC/VS有3种版本号,具备一定的迷惑性:(xx表示具体的数字) MSVC++ xx(VC版本 eg. VC6.0) _MSC_VER xx VisualStudio xx(VS版本 ...

  8. 【BZOJ-1179】Atm Tarjan + SPFA

    1179: [Apio2009]Atm Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 2407  Solved: 993[Submit][Status ...

  9. Java垃圾收集学习笔记

    (1)除了释放不再被引用的对象,垃圾收集器还要处理 堆碎块 .请求分配新对象时可能不得不增大堆空间的大小,虽然可以使用的空闲空间是足够的,但是堆中没有没有连续的空间放得下新对象.可能会导致虚拟机产生不 ...

  10. 【Alpha版本】冲刺-Day8

    队伍:606notconnected 会议时间:11月16日 会议总结 张斯巍(433) 今天安排:回收站界面设计 完成度:90% 明天计划:关注界面设计 遇到的问题:无 感想:有时候自己设计的队友说 ...