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
- .warper {
- position: absolute;
- width: 100%;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- overflow-y: scroll;
- -webkit-overflow-scrolling: touch; /* 解决ios滑动不流畅问题 */
- }
- .fix-bottom {
- position: fixed;
- bottom: 0;
- width: 100%;
- }
7. ios 键盘换行变为搜索
- input type="search"
- input 外面套 form,必须要有 action,action="javascript:return true"
- 表单提交阻止默认提交事件
新闻标题:总结几个移动端H5软键盘的大坑
URL地址:http://www.shufengxianlan.com/qtweb/news33/303383.html网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
- 开发一个商城多久?(开发一个商城多久完成)
- 服务器托管的费用一般多少?服务器3m独享是什么意思
- C语言读取数据库表格的实现方法(c读取数据库表格数据库数据库)
- windowspytorch下载?(pytorch下载教程)
- html如何打开
- 求求你,别用Os.Path了
- 国庆水墨画简单
- 修改Oracle存储过程所需代码
- 复制内容为什么会不完整
- 教你如何轻松导出万德数据库,操作简单易学(万德如何导出数据库)
- 租赁海外服务器怎么测试性能
- 游戏云主机租用的优缺点是什么呢
- Kubuntu21.04中安装KDEPlasma5.2具体步骤
- 云服务器,西部数码和阿里云比较哪个好?(西部数码空间费用)
- idc业务如何销售?(怎么代理idc主机卖出去)