文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

移动端H5软键盘的大坑有哪些

2024-04-02 19:55

关注

这篇文章主要介绍“移动端H5软键盘的大坑有哪些”,在日常操作中,相信很多人在移动端H5软键盘的大坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”移动端H5软键盘的大坑有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 部分机型软键盘弹起挡住原来的视图

解决方法:可以通过监听移动端软键盘弹起。

Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内。参数如下:

Element.scrollIntoViewIfNeeded()方法也是用来将不在浏览器窗口的可见区域内的元素滚动到浏览器窗口的可见区域。但如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动。此方法是标准的Element.scrollIntoView()方法的专有变体。

window.addEventListener('resize', function() {   if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {     window.setTimeout(function() {       if ('scrollIntoView' in document.activeElement) {         document.activeElement.scrollIntoView(false)       } else {         document.activeElement.scrollIntoViewIfNeeded(false)       }     }, 0)   } })

2. ios 键盘收起时页面没有回落,底部会留白

部分苹果手机填写表单的时候的,输入内容后关闭软键盘,底部会留一块空白。这种情况可以通过监听键盘回落时间滚动到原来的位置。

window.addEventListener('focusout', function() {   window.scrollTo(0, 0) })  //input输入框弹起软键盘的解决方案。 var bfscrolltop = document.body.scrollTop $('input')   .focus(function() {     documentdocument.body.scrollTop = document.body.scrollHeight     //console.log(document.body.scrollTop);   })   .blur(function() {     document.body.scrollTop = bfscrolltop     //console.log(document.body.scrollTop);   })

3. onkeyUp 和 onKeydown 兼容性问题

部分 ios 机型 中 input 键盘事件 keyup、keydown、等支持不是很好, 用 input 监听键盘 keyup  事件,在安卓手机浏览器中没有问题,但是在 ios 手机浏览器中用输入法输入之后,并未立刻相应 keyup 事件:

4. ios12 输入框难以点击获取焦点,弹不出软键盘

定位找到问题是 fastclick.js 对 ios12 的兼容性,可在 fastclick.js 源码或者 main.js 做以下修改:

FastClick.prototype.focus = function(targetElement) {   var length   if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {     length = targetElement.value.length     targetElement.setSelectionRange(length, length)     targetElement.focus()   } else {     targetElement.focus()   } }

5. fastclick 导致下拉框焦点冲突

移动端使用 fastclick 之后,在 ios 环境下,有几个连续的下拉框 第一个 select 框突然填充了第二个下拉框的内容。

根本原因是 Fastclick 导致 ios 下多个 select ,点击某一个,焦点不停变换的 bug。修改源码,在 onTouchStart  事件内判断设备是否为 ios,再判断当前 nodeName 是否为 select,如果是 return false 去阻止 fastClick  执行其他事件。

//line 391行 FastClick.prototype.onTouchStart = function(event) {   //在其方法中添加判断 符合ios select的时候 不返回事件   if (deviceIsIOS && this.targetElement == 'select') this.targetElement = null   event.preventDefault() } //line521 或者讲源码中 有关touchEnd判断非ios或者非select的事件注释, if (!deviceIsIOS || targetTagName !== 'select') {   this.targetElement = null   event.preventDefault() }

6. ios 下 fixed 失效的原因

软键盘唤起后,页面的 fixed 元素将失效,变成了 absolute,所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了。不仅限于  type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样地问题。

解决方法: 不让页面滚动,而是让主体部分自己滚动,主体部分高度设为 100%,overflow:scroll

<body>   <div class='warper'>     <div class='main'></div>   <div>   <div class="fix-bottom"></div> </body>
.warper {   position: absolute;   width: 100%;   left: 0;   right: 0;   top: 0;   bottom: 0;   overflow-y: scroll;   -webkit-overflow-scrolling: touch;  } .fix-bottom {   position: fixed;   bottom: 0;   width: 100%; }

7. ios 键盘换行变为搜索

<form action="javascript:return true" @submit.prevent="formSubmit">   <input type="search" placeholder="请输入诉求名称" id="search" /> </form>

到此,关于“移动端H5软键盘的大坑有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯