webview的输入及光标定位问题总结

本文总结了WebView在iOS和Android上遇到的输入、光标定位问题及其解决策略。针对页面自动聚焦、软键盘表现、可视区高度变化、光标坐标获取等问题,提供了针对性的解决方案,包括Android和iOS机型的特定处理方法,确保光标始终可见并优化用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文将围绕以下问题进行展开:

  • 页面加载自动聚焦
  • ios与Android机型软键盘表现差异很大,输入、换行问题兼容
  • ios的页面滚动问题及占位文本的展示问题
  • 如何更好地控制光标的位置

页面加载自动聚焦

说明: 这里说的是没有任何用户行为前,有用户操作的自动聚焦无需处理,本身支持。

首先,我们想到的是使用focus()来实现聚焦,然而,当在真机测试时却发现根本没效果

解决方案

ios手机

ios系统默认不支持事件自动聚焦,所以这个需要客户端同学的支持,使webview允许事件自动聚焦。

这样我们页面使用focus()会直接生效。

Android手机

安卓客户端的webview无法通过事件自动聚焦并拉起键盘,但是可以通过原生代码实现,添加原生方法:webview.requestFocus()

然后暴露给h5一个方法即可,在需要聚焦的地方直接调用。

关于ios和Android软键盘的表现

ios软键盘(如下左图)

  • 输入框获取焦点,键盘弹起
  • 页面并没有被压缩,或者说高度(height)没有改变
  • 可见区发生了变化,即原页面高度-软键盘高度
  • ios软键盘其实是脱离页面视图层的,可当作两层看,键盘对页面高度没有影响
  • 软键盘收起,输入框失去焦点

Android软键盘(如下右图)

  • 输入框获取焦点,键盘弹起
  • 页面高度会发生改变
  • 可视区同样发生变化
  • 软键盘与页面共用一个视图层,整体高度固定,键盘弹起,页面自然被压缩
  • 软键盘收起,输入框仍然聚焦

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jq95zniA-1656592274534)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c3e79a0176354b009d69f3499e3a6bac~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffvKAVnu-1656592274534)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b67822caced74e0d8c7533fa80b3822e~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)]

通过两端软键盘的表现,我们可以得知,键盘拉起,两端的可视区都发生了改变,即visualViewport发生了变化。

developer.mozilla.org/zh-CN/docs/…

通过下图可以比较清晰地看出两者的区别。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-626WX6XB-1656592274535)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f6204fe5d45043578930f7cdfd4aa742~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)] ios的问题

  • ios输入内容高度超过可视区时,页面不会自动滚动,导致超出区域被隐藏
  • 输入框重新聚焦时,如果位于可视区内,则页面不动,但是如果聚焦位置超出可视区,页面会自动滚动,导致页面导航区域上移,影响交互体验。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVkfqtNF-1656592274535)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/73b612e74fec43698ff0061fb82863b0~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qebuDgrQ-1656592274535)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/614ff5659146447a8a73e28953068362~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)]

Andorid的问题

  • 连续输入多行,光标自动定位在最下方,输入框上移。🆗的
  • 当再次聚焦时,光标被隐藏,无法自动定位到光标处并显示在可视区。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值