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软键盘的大坑
本文链接:http://www.mswzjz.cn/qtweb/news33/303383.html攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能
- 服务器被禁用什么原因?服务器被封
- 详细讲解:Subversion及其Eclipse插件的安装
- 去韩国怎么手机怎么上网?(去韩国怎么用流量)
- 分位数是什么意思
- jsp和html区别
- Linux下视频制作指南(linux视频制作)
- jquery怎么导入js库
- Python主机:一步搞定你的服务器管理(python主机)
- 选择香港云主机需要注意哪些问题?(香港云主机怎样转变业务的未来发展)
- 深入浅出Linux gvim配置(linuxgvim配置)
- 并发编程:volatile关键字,你学会了吗?
- 27代理为什么能提高网速?(国外网站cdn加速有哪些优点)
- Linux操作Redis:快速实现数据库管理(linux操作redis)
- 12306是猪脑袋开发的吗?(订票网站设计素材app,logo网站设计素材)
- 模板过户失败麻烦处理一下