移动端兼容性问题集锦
前言
去年主要工作就是混合开发,写app内嵌的h5。在开发期间多多少少遇到些兼容性问题,最近工作比较清闲,整理下方便以后查阅,也希望能帮助到一些同学。
并且本文会持续补充内容,欢迎关注我,另外我会更新一些前端方面的其他一些知识。
1. ios端 new Date() 问题
问题描述: ios规定日期要以“ / ”分割,而不能用“ - ”。
比如在ios:new Date('2023-01-01 00:00:00') 会返回NaN(在pc端safari是Invalid Date)
解决办法: 改用“/”分割,例如:new Date('2023/01/01 00:00:00')
**替换字符串: **new Date(“2023-01-01 00:00:00”).replace(/-/g, “/”);
2. ios端 h5返回不刷新页面
问题描述: ios端打开h5页面后,从a页面跳转到b页面,然后再返回a页面之后,发现a页面没有刷新。貌似是ios会在浏览网页后生成一个类似快照的东西,当返回时,直接调用这个快照进行展示,从而提高性能。安卓手机的h5返回时都会刷新,ios好像是部分机型也会刷新。
但是如果我们需要在返回时重新获取下最新的信息,这个机制就会存在bug。
解决办法:
//pageshow里的 persisted 属性 表示该页面是否从浏览器缓存中读取。
window.addEventListener('pageshow', function (event) { if (event.persisted) { //重载页面或者刷新数据}
});
3. 移动端媒体自动播放
问题描述: 安卓和ios对媒体的自动播放都有不同的限制要求。比如ios要求至少要有一次交互才能开始播放。
解决办法:\
- 在微信环境内可以利用微信的api(微信内置浏览器的私有对象WeixinJSBridge)实现自动播放
- 其他环境下,为了保证兼容性,一般最好有个缓冲页面,用来加载资源,并提示用户点击开始播放。
var audio = document.getElementById(id)
document.addEventListener("touchstart",play, false);
play = function(){audio.play();document.removeEventListener("touchstart",play, false);
};
audio.play();//兼容微信
document.addEventListener("WeixinJSBridgeReady", function () {play();
}, false);
4. ios端 点击事件有300秒延迟
问题描述: 由于早期iphone设计了双击放大的功能,所以要判断用户操作是单机还是双击,所以做了300ms的延迟判断。
解决办法:\
- 设置不能缩放:
user-scalable=no或者设置显示宽度:width=device-width(常用,简单快捷)
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
- 使用fastclick库
window.addEventListener("load",function () {FastClick.attach(document.body);
},false);
- 使用touchstart事件代替click事件
5. 安卓端 底部按钮在调用输入法时被顶起来
问题描述: 在安卓端,用absolute/fixed将一个按钮固定在页面底部时,如果调用输入法,这个按钮也会被输入框顶起来
解决办法: 使用媒体查询,在页面高度小于某值时,设置元素top值
@meida screen and (max-height: 400px) {}
6. 移动端 键盘遮挡输入框问题
问题描述: 当输入框固定在最底部,点击输入框调起输入法的软键盘后输入框会被遮挡。
解决办法: \
- 如果你的底部输入框是用fixed定位固定在下方的,一般不会出现这问题,如果出现了,可以考虑监听网页resize事件或者输入框focus事件,动态修改输入框位置;
- 如果是用absolute或者relative实现的,可能是你最外层的盒子高度写死了。
- 使用scrollIntoView方法将输入框滚动到可视区域document.getElementById(‘inputId’).scrollIntoView();
7. 移动端 1px 边框变粗
问题描述: 在移动端给元素设置1px的边框时,总是感觉好像不止1像素?好像被加粗了?了解原因
解决办法:
div{position: relative;border:none;}div:after{content: '';position: absolute;top: 0;left: 0;border: 1px solid #000;-webkit-box-sizing: border-box;box-sizing: border-box;width: 200%;height: 200%;-webkit-transform: scale(0.5);transform: scale(0.5);-webkit-transform-origin: left top;transform-origin: left top;}
8. ios端 无滚动惯性
问题描述: 在ios端,使用了absolute布局之后,会发现元素内的滚动非常不流畅,滑动的手指松开后,滚动会立刻停止,没有滚动惯性。
解决办法:
-webkit-overflow-scrolling: touch;
9. 禁止 ios 弹出各种操作窗口
-webkit-touch-callout:none
10. 禁止 ios 识别长串数字为电话
问题描述: 在ios端,会把数字识别成电话号码,导致增加超链接样式并且可以点击拨打
解决办法:
<meta name="format-detection" content="telephone=no">
<meta http-equiv="x-rim-auto-match" content="none">
11. ios端 输入框聚焦出现阴影
问题描述: 在ios端,input输入框在聚焦的时候,有时候会出现outline或者阴影,安卓则是显示正常的。
解决办法:
input:focus{outline:none} input:{-webkit-appearance: none;}
12. ios 端search类型的输入框自带搜索图标
问题描述: ios 15以上的版本,search类型的输入框会自带图标
解决办法:
我们可以用css将其隐掉:
input[type="search"]{-webkit-appearance:none;}[type="search"]::-webkit-search-decoration { display: none; }input::-webkit-search-cancel-button {display: none;}
13.ios端 swiper轮播图设置圆角,滑动时会先变成直角再变回圆角
解决办法:
在父盒子上加下面css:
overflow:hidden;transform:translateY(0);
14. 安卓端 部分机型点击图片会放大
img{ pointer-events:none; }
相关文章:
移动端兼容性问题集锦
前言 去年主要工作就是混合开发,写app内嵌的h5。在开发期间多多少少遇到些兼容性问题,最近工作比较清闲,整理下方便以后查阅,也希望能帮助到一些同学。 并且本文会持续补充内容,欢迎关注我,另外我会更新一…...
【Spark分布式内存计算框架——Spark SQL】4. DataFrame(上)
3.1 DataFrame是什么 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame与RDD的主要区别在于,前者带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。 使…...
GPS通信
目录 一、GPS启动的方式 二、GPS经纬度坐标转换 三、GPS定位和网络定位 四、3D定位和2D 定位 五、同步GPS时间到本地时间 六、卫星分布对GPS performance有很大影响吗 一、GPS启动的方式 热启动:指在上次关机的地方没有过多移动过,且距离上次定位…...
Java高频面试题,ReentrantLock 是如何实现锁公平和非公平性的?
我先解释一下个公平和非公平的概念。 公平,指的是竞争锁资源的线程,严格按照请求顺序来分配锁。 非公平,表示竞争锁资源的线程,允许插队来抢占锁资源。 ReentrantLock 默认采用了非公平锁的策略来实现锁的竞争逻辑。 其次&…...
「JVM 原理使用」 实际开发中的应用
Class 文件格式、执行引擎主要以 Class 文件描述了存储格式、类何时加载、如何连接、VM 如何执行字节码指令,这些动作基本都是 JVM 直接控制,用户代码无法干预和改变; 用户可以干预的只有字节码生成、类加载器两部分,而这两部分的…...
最最普通程序员,如何利用工资攒够彩礼,成为人生赢家
今天我们不讲如何提升你的专业技能去涨工资,不讲面试技巧如何跳槽涨工资,不讲如何干兼职赚人生第一桶金,就讲一个最最普通的程序员,如何在工作几年后,可以攒够彩礼钱,婚礼酒席钱,在自己人生大事…...
脏话越多,代码越好!
你在读开源代码的时候有没有遇到过这种注释?What the fuck ?Dude,WTFFuck this !我遇到过,每次都忍不住笑,心想老外可真是性情中人,遇到不爽的地方就开骂,还直接写到注释中,甚至代码中。Bob大叔…...
【Node.js】模块化
模块化模块化的基本概念模块化规范Node.js中模块化分类模块作用域向外共享模块作用域的成员Node.js中的模块化规范模块化的基本概念 指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程对于整个系统来说,模块是可组合,分解和更换…...
训练一个中文gpt2模型
前言 这是我的github上的一个介绍,关于如何训练中文版本的gpt2的。链接为: https://github.com/yuanzhoulvpi2017/zero_nlp 介绍 本文,将介绍如何使用中文语料,训练一个gpt2可以使用你自己的数据训练,用来:写新闻、…...
python文件头规范和函数注释自动生成(pycharm)
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Time : ${DATE} ${TIME} Author : xxx Email : xxxxxx.comFileName: ${NAME}.py Software: ${PRODUCT_NAME} """if __name__ __main__:print(Python)pycharm python文件头规范和函数注…...
Fluent Python 笔记 第 17 章 使用 future 处理并发
future 指一种对象,表示异步执行的操作。这个概念的作用很大,是 concurrent.futures 模块和 asyncio 包(第 18 章讨论)的基础。 17.1 示例:网络下载的三种风格 17.1.1 依序下载的脚本 17.1.2 使用 concurrent.futures 模块下载 from concurrent impo…...
Android进阶之路 - StringUtils、NumberUtils 场景源码
忘记是在去年还是前年的时候遇到一个需要检测所传字符串是否为数字的场景,开始使用 NumberUtils.isNumber() 提示错误 ,没有解决问题(可能是因为依赖版本导致),最后使用的是StringUtils.isNumeric(),当时关…...
装备制造业数字化转型CRM系统解决方案(信息图)
一、制造企业面临的机遇与挑战 2021年12月28日,工业和信息化部等八部门联合对外发布《“十四五”智能制造发展规划》,明确提到“推进智能制造,要立足制造本质,紧扣智能特征,以工艺、装备为核心,以数据为基…...
CGAL 二维剖分
目录一、 2D Triangulations1、定义2 Representation2.1 The Set of Faces2.2 A Representation Based on Faces and Vertices3 Software Design4 Basic Triangulations4.1 Description遍历三角网顶点4.2 Implementation4.3 Geometric Traits4.4 Example of a Basic Triangulat…...
node.js+vue婚纱影楼摄影婚庆管理系统vscode项目
:减少管理婚庆工作人员的负担;管理人员可以随时浏览婚纱网站以便及时知道哪里需要修改和更进,同时还可以查看用户反馈给我们的信息,让管理员更加直观的了解客户的需求;该系统改变了以前手工记录的方式,使用…...
C语言 指针的新理解
16年写了很多 C 与 C 相关的文章,但是后面从事了 Android 开发,就全部删掉了,无意中发现了这篇由还存在草稿箱,索性就找回来吧,也是追忆当年学习的青葱岁月 1.指针就是一个存储了其他变量地址的变量。 指针存储的是整…...
【向每个应用View中增加子控件 Objective-C语言】
一、把刚才计算九宫格的思路再给大家过一遍 1.现在我们要计算九宫格坐标 1)先把每一个格子,每一个九宫格的大小,先确定了, 在这里先指定宽和高 CGFloat appW = 75; CGFloat appH = 90; 2)再去计算第一个格子的一些间距, 到上面的间距,marginTop = 30; 再计算出…...
【FPGA】Verilog:组合电路设计 | 三输入 | 多数表决器
前言:本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载的示例:表决器(三人表决器)。 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片 配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部…...
【安全等保】安全等保二级和三级哪个高?哪个费用更高?
等保政策已经严格落地执行了,各大企业纷纷接到了过等保的通知,但有的估计是第一次听到等保,对于等保相关政策都是非常蒙圈的。这不不少企业相关负责人在问,安全等保二级和三级哪个高?哪个费用更高?这里我们…...
C++ STL学习记录(v1)
C STL学习记录一. 什么是STL1.1 STL的诞生1.2 STL基本概念1.3 STL的六大组件1.4 STL中的容器、算法、迭代器1.5 容器、算法、迭代器实践一. 什么是STL 1.1 STL的诞生 STL建立的目的就是为了解决软件界复用性的需求。C的面向对象和泛型编程思想,目的就是为了复用性的…...
AI赋能图像分割:跨界应用的未来
自然图像域自适应分割是一种技术,通过强化不同数据集(域)的图像样本的边界(boundary)和不确定区域(entropy)特征的一致性,以实现更好的域自适应的分割结果。自然图像域自适应分割技术…...
Credenza:现代化开发凭证管理工具的设计原理与实战应用
1. 项目概述:一个现代化的凭证管理工具 最近在整理自己的开发环境时,又被各种API密钥、数据库密码、服务令牌给搞烦了。这些敏感信息散落在不同的 .env 文件、配置脚本甚至代码注释里,每次换机器或者和新同事协作都得小心翼翼,生…...
Midjourney提示词工程终极护城河:基于CLIP文本嵌入空间的向量对齐技术(附Python可视化调试工具)
更多请点击: https://intelliparadigm.com 第一章:Midjourney提示词工程终极护城河:基于CLIP文本嵌入空间的向量对齐技术(附Python可视化调试工具) 在生成式AI实践中,提示词质量差异常导致图像语义漂移——…...
无人机+点云+Civil3D:无控制点场景下的高精度土方算量实战
1. 无人机航测在复杂地形土方算量中的优势 石头山这类复杂地形一直是工程测绘的难点。传统全站仪测量需要测绘人员翻山越岭布设控制点,不仅效率低下,还存在安全隐患。而无人机航测就像给工程装上了"天眼",特别适合解决这类难题。 去…...
Ubuntu 22.04 LTS 安装 NVIDIA 驱动保姆级教程:告别 Nouveau 报错,一步到位
Ubuntu 22.04 LTS 终极NVIDIA驱动安装指南:从原理到实战 刚接触Ubuntu的新手用户,在安装NVIDIA驱动时往往会遇到各种报错,尤其是经典的"Nouveau in use"错误。本文将带你深入理解驱动冲突的底层原理,并提供一套完整的解…...
热成像与计算机视觉融合:打造免提可穿戴交互新范式
1. 项目概述:从一次“意外”到可穿戴交互新范式 在实验室里摆弄新到的热成像相机,这原本只是一个打发时间的“快乐意外”。我的咖啡杯、显示器,甚至是我自己的脸,在热成像镜头下都呈现出有趣的温度图案。但真正让我停下手中咖啡的…...
【华南理工大学支持 | IEEE出版 | 往届会议论文完成EIScopus双检索 | 云计算、通信工程、图像处理等相关主题均可投稿】第三届云计算与通信工程国际学术会议(CCCE 2026)
第三届云计算与通信工程国际学术会议(CCCE 2026) 2026 3rd International Conference on Cloud Computing and Communication Engineering 2026年06月12-14日 , 中国深圳 征稿主题广:云计算|通信工程|图像处理等相关主题 权威收录:EI…...
CS Demo Manager:免费开源CS比赛录像分析工具终极指南
CS Demo Manager:免费开源CS比赛录像分析工具终极指南 【免费下载链接】cs-demo-manager Companion application for your Counter-Strike demos. 项目地址: https://gitcode.com/gh_mirrors/cs/cs-demo-manager 你是否曾想过,为什么职业选手总能…...
AI 驱动多态钓鱼攻击机理与行为防御体系研究
摘要 生成式 AI 技术推动网络钓鱼从规模化群发转向实时动态变异的多态化攻击模式,以每 15–20 秒生成唯一邮件、链接与附件,彻底颠覆基于重复特征与静态规则的传统防御逻辑。Cofense 2025 年威胁数据显示,76% 的恶意 URL 具备唯一性、82% 的恶…...
如何轻松解锁Cursor Pro完整功能:一键激活与无限使用的完整指南
如何轻松解锁Cursor Pro完整功能:一键激活与无限使用的完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached…...
