h5 ios输入框和键盘的兼容性优化指南

2025-05-29 0 44

起因

h5的输入框引起键盘导致体验不好,目前就算微信、知乎、百度等产品也没有很好的技术方案实现,尤其底部固定位置的输入框各种方案都用的前提下体验也并没有很好,这个问题也是老大难问题了。目前在准备一套与native协议 来解决这个问题,目前项目中的解决方案还是有值得借鉴的地方的,分享一下

下面话不多说了,来一起看看详细的介绍吧

业务场景

固定在h5页面底部的输入框

无论是使用

?

1
<input />

还是

?

1

2
<div contenteditable="true">

</div>

在聚焦事件触发调起原生键盘时,在ios部分机型(iphone 4s iphone 5等)上会使得键盘弹起后遮挡住输入框,使得用户体验不好。

目前的解决方案是写一个定时任务,在判定是ios打开页面时,执行以下函数

?

1

2

3

4

5

6

7
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.

语法

?

1

2

3
element.scrollintoview(); // 等同于element.scrollintoview(true)

element.scrollintoview(aligntotop); // boolean型参数

element.scrollintoview(scrollintoviewoptions); // object型参数

参数

参数 说明 类型 可选值 默认值
aligntotop boolean false
scrollintoviewoptions object
?

1

2

3

4
{

behavior: "auto" | "instant" | "smooth",

block: "start" | "end",

}

在can i use中查到的scrollintoview的兼容性(主流浏览器中不考虑ie)

  • firefox 36 以上兼容
  • chrome 61 以上兼容
  • safiri 5.1开始 不兼容behavior中的smooth

后续问题

当然,这个解决方案智能解决部分机型的问题,要真正解决这个问题还是要依靠native端。

在ios 和 安卓机型的问题

因为设置了这个定时任务,就会有一个后续的问题出现,也是在落地项目中有遇到过的,在此说明一下。

在上拉或下拉到头时,会出现背景白色的现象,因为有了这个定时器,它就会不断将视图拉回,导致页面抖动。
如果在app层做了webview禁止拖动的话就不会有这个问题,当然不能完全依赖app,在程序中我们也需要做此方面的兼容优化。

?

1

2

3

4

5
<div class="container"

@touchstart="touchstart($event)"

@touchend="touchend($event)">

</div>

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
touchstart(e) {

this.cleartimer();

},

touchend(e) {

this.repairiosinput();

},

cleartimer() {

if(this.timer) {

clearinterval(this.timer);

this.timer = null;

}else{

return;

}

},

repairiosinput() {

if(this.timer) {

return;

}

this.timer = setinterval(()=>{

container.scrollintoview({

block: 'start',

behavior: 'auto'

})

},300);

}

在开始拉动页面时清空定时器,停止拉动时开启定时器,这样就可以解决造成的抖动的问题了。

总结

做为一个老大难的问题,还会用更多的解决方案,请与我联系,一起讨论,早日脱坑!

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 h5 ios输入框和键盘的兼容性优化指南 https://www.kuaiidc.com/89064.html

相关文章

发表评论
暂无评论