app内嵌H5遇到的部分坑
时间:2019-11-13
本文章向大家介绍app内嵌H5遇到的部分坑,主要包括app内嵌H5遇到的部分坑使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.input组件
input设置type=number(键盘弹出为数字)问题
(1)input的maxlength属性失效:只能通过输入事件来对输入的值进行限制
(2)样式问题:在部分的android手机上面出现样式问题,需要去掉input的默认样式
input,textarea { border: 0; -webkit-appearance: none; //可同时屏蔽输入框怪异的内阴影,解决iOS下无法修改按钮样式,测试还发现,加了此属性后,iOS下默认还是有圆角的,不过可以用border-radius属性修改 }
2.select组件
select设置问题
(1)禁用默认的箭头
::-ms-expand修改表单控件下拉箭头,设置隐藏并使用背景图片来修饰 select::-ms-expand { display:none; }
3.视频音频autoplay属性失效
Android和ios系统都会禁止自动播放和js触发播放视频或者音频,我们只能通过用户的touchstart触碰触发播放并暂停,然后再通过相应的js进行操作
document.addEventListener('touchstart', function () { document.getElementsByTagName('audio')[0].play(); document.getElementsByTagName('audio')[0].pause(); });
4.fixed定位问题
在ios系统下,fixed属性在键盘顶起的时候会失效,所以同意使用absolute代替
5.ios常按页面元素选中
加入禁止选中样式
-webkit-touch-callout:none; //系统默认菜单被禁用;可以实现页面因为长按弹出各种操作窗口
-webkit-user-select:none; //webkit浏览器
-khtml-user-select:none; //早期浏览器
-moz-user-select:none; //火狐
-ms-user-select:none; //IE10
user-select:none;
input { -webkit-user-select:auto; //webkit浏览器(防止input无法正常输入) }
6.ios键盘弹出下落bug问题
created() { this.handleFocusOut(); this.handleResize(); }, methods:{ handleFocusOut() { // input 焦点失焦后,ios 键盘收起,但没有触发 window resize,导致实际页面dom仍然被键盘顶上去--错位 document.addEventListener('focusout', () => { document.body.scrollTop = 0; }); }, // 监听resize事件(键盘弹起触发),然后将 input textarea 元素滑动到可视区域,并将特定元素隐藏 handleResize() { const clientHeight = document.documentElement.clientHeight; window.addEventListener('resize', () => { // 判断当前 active 的元素是否为 input 或 textarea if ( document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA' ) { setTimeout(() => { // 原生方法,滚动至需要显示的位置 document.activeElement.scrollIntoView(); }, 0); } // 解决键盘弹起后 fixed 定位元素被顶起问题 const bodyHeight = document.documentElement.clientHeight; const ele = document.getElementById('fixed-bottom'); if (ele) { if (clientHeight > bodyHeight) { ele.style.display = 'none'; } else { ele.style.display = 'block'; } } }); } }
原文地址:https://www.cnblogs.com/longflag/p/11847239.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 如何使用 HttpRunner 做接口自动化测试
- Python 爬虫时,高版本 App 如何进行抓包?
- 使用 shell-operator 实现 Operator
- 我们是如何用 K8S 搞定1000个应用的测试环境
- 关于Python 3.9,那些你不知道的事
- urllib, urllib2, urllib3 都是小弟弟
- 使用 Kustomize 定制 Helm Chart
- 装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
- 最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)
- 6个提升效率的pandas小技巧
- 如何用 Python 让微博热搜榜动起来
- 如何用 Python 让微博热搜榜动起来
- 漫画:什么是 “抽象工厂模式” ?
- 5个很常用的CSS3网页小实例
- 收藏!!!学习Matplotlib看这一份笔记就够了!