时间:2021-05-20
起因
h5的输入框引起键盘导致体验不好,目前就算微信、知乎、百度等产品也没有很好的技术方案实现,尤其底部固定位置的输入框各种方案都用的前提下体验也并没有很好,这个问题也是老大难问题了。目前在准备一套与native协议 来解决这个问题,目前项目中的解决方案还是有值得借鉴的地方的,分享一下
下面话不多说了,来一起看看详细的介绍吧
业务场景
固定在h5页面底部的输入框
无论是使用
<input />还是
<div contenteditable="true"> </div>在聚焦事件触发调起原生键盘时,在ios部分机型(iphone 4s iphone 5等)上会使得键盘弹起后遮挡住输入框,使得用户体验不好。
目前的解决方案是写一个定时任务,在判定是ios打开页面时,执行以下函数
let timer = setInterval(()=>{ // container 知道整个容器的dom节点 container.scrollIntoView({ block: 'start', behavior: 'auto' })},300); //300毫秒是经过多次试验得到的数值,用户体验为佳关于scrollIntoView
scrollIntoView这个API,官方的解释是
The Element.scrollIntoView() method scrolls the element on which it's called into the visible area of the browser window.
语法
element.scrollIntoView(); // 等同于element.scrollIntoView(true) element.scrollIntoView(alignToTop); // Boolean型参数 element.scrollIntoView(scrollIntoViewOptions); // Object型参数参数
参数 说明 类型 可选值 默认值 alignToTop -- boolean --- false scrollIntoViewOptions -- object -- --
{ behavior: "auto" | "instant" | "smooth", block: "start" | "end",}在can i use中查到的scrollIntoView的兼容性(主流浏览器中不考虑ie)
后续问题
当然,这个解决方案智能解决部分机型的问题,要真正解决这个问题还是要依靠native端。
在ios 和 安卓机型的问题
因为设置了这个定时任务,就会有一个后续的问题出现,也是在落地项目中有遇到过的,在此说明一下。
在上拉或下拉到头时,会出现背景白色的现象,因为有了这个定时器,它就会不断将视图拉回,导致页面抖动。
如果在app层做了webview禁止拖动的话就不会有这个问题,当然不能完全依赖app,在程序中我们也需要做此方面的兼容优化。
在开始拉动页面时清空定时器,停止拉动时开启定时器,这样就可以解决造成的抖动的问题了。
总结
做为一个老大难的问题,还会用更多的解决方案,请与我联系,一起讨论,早日脱坑!
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
之前我们在使用vue进行h5表单录入的过程中,遇到了Android软键盘弹出,覆盖h5页面输入框问题,在此进行回顾并分享给大家:系统:Android条件:当输入
XML/HTMLCode复制内容到剪贴板placeholder="请输入用户名/手机号";html5输入框提示语。以上就是小编为大家带来的h5输入框提示语+正常
上周发布的QQ拼音2.1版本优化了在游戏中的兼容性,解决了游戏中拖动问题和输入框位置显示等问题。对于游戏玩家来说,一个兼容性能良好的输入法十分必要。笔者亲身体验
1、问题由来做h5已经有很长一段时间了,现在做的工作h5比pc上的更多,曾经解决pc端IE各个版本的兼容性也是伤透脑筋,原以为h5的会更好,殊不知,还有更头疼的
IOS7点击空白处隐藏键盘的几种方法,具体如下:iOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取