移动端兼容性问题集锦

这篇具有很好参考价值的文章主要介绍了移动端兼容性问题集锦。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

去年主要工作就是混合开发,写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要求至少要有一次交互才能开始播放。
解决办法:\

  1. 在微信环境内可以利用微信的api(微信内置浏览器的私有对象WeixinJSBridge)实现自动播放
  2. 其他环境下,为了保证兼容性,一般最好有个缓冲页面,用来加载资源,并提示用户点击开始播放。
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的延迟判断。
解决办法:\

  1. 设置不能缩放:user-scalable=no或者设置显示宽度:width=device-width (常用,简单快捷)
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
  1. 使用fastclick库
window.addEventListener("load",function () {
    FastClick.attach(document.body);
},false);

  1. 使用touchstart事件代替click事件

5. 安卓端 底部按钮在调用输入法时被顶起来

问题描述: 在安卓端,用absolute/fixed将一个按钮固定在页面底部时,如果调用输入法,这个按钮也会被输入框顶起来
解决办法: 使用媒体查询,在页面高度小于某值时,设置元素top值
@meida screen and (max-height: 400px) {}

6. 移动端 键盘遮挡输入框问题

问题描述: 当输入框固定在最底部,点击输入框调起输入法的软键盘后输入框会被遮挡。
解决办法: \

  1. 如果你的底部输入框是用fixed定位固定在下方的,一般不会出现这问题,如果出现了,可以考虑监听网页resize事件或者输入框focus事件,动态修改输入框位置;
  2. 如果是用absolute或者relative实现的,可能是你最外层的盒子高度写死了。
  3. 使用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:文章来源地址https://www.toymoban.com/news/detail-402611.html

    overflow:hidden;
    transform:translateY(0)

14. 安卓端 部分机型点击图片会放大

    img{  
      pointer-events:none;  
    }

到了这里,关于移动端兼容性问题集锦的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TRichView兼容性问题 Crack

    Markdown导入和导出现在支持存储在Markdown文本中的图像,而不是外部文件。 在TRichView.MarkdownProperties.SaveOptions:rvmdsoInlineImages中添加了一个新选项。 兼容性问题: TRichView.SavePicture有一个新参数:IsBackgroundImage。 对于Apple macOS,Ctrl在默认快捷方式和编辑器中的超链接激活中已更改

    2024年02月04日
    浏览(53)
  • Microsoft edge兼容性问题

    连接需要登录界面的无线网络时候,Microsoft edge老是会出现兼容性问题的错误。 这时候设置什么也打不开。 通过网上搜索,我是通过修改注册表的方法成功的。 Win10 Edge兼容性问题打不开|解决浏览器兼容性问题_白云一键重装系统 步骤一:打开运行 ①可以同时按键盘的Win和

    2024年02月10日
    浏览(63)
  • 解决flex gap兼容性问题

    一个项目写下来,在网页端预览的时候正常,结果到产品经理手上。 设计稿样式 实际产品手机上样式 产品:“你这玩意儿怎么没间距?” 我:“为什么我的正常???呐呐呐你看我手机(来自RedmeK50Utral)” 产品:“哦,你看我的手机(来自荣耀20)” 我:“。。。” 至此

    2024年02月07日
    浏览(54)
  • 解决前端浏览器兼容性问题

    解决前端浏览器兼容性问题时前端开发中的一项重要任务。以下是一些常用的方法来解决这类问题: 1、使用css前缀: 不同浏览器可能对某些CSS属性有不同的前缀要求。可以使用CSS前缀来覆盖不同浏览器的样式需求。例如,使用 -webkit 前缀来适配WebKit(Chrome、Safari)浏览器

    2024年02月09日
    浏览(47)
  • 如何解决群晖硬盘兼容性问题

    首先,在群晖设置-终端-启用SSH。然后,下载putty,用administrator管理权限组的账号登录, 如输入“ssh 你的DSM用户名@IP”,输入登录密码登录。最后,运行以下命令切换到root权限。 sudo - i 进到系统配置文件夹。 cd  /etc.default 备份配置文件 cp  synoinfo.conf synoinfo.conf2 编辑配置文

    2024年02月09日
    浏览(210)
  • Qt绘制边框有阴影兼容性问题

    在Qt开发过程中,有时候我们要显示一个有阴影的对话框,这时一般采用自定义实现,然而最近在开发时软件时,Win11上显示正常,Win10或其他Win11电脑显示不正常,存在兼容性问题吗? 下面是具体的源码 运行点击Button按钮 这是在Win11上显示的效果 这是在Win10上显示的效果,很

    2024年04月23日
    浏览(45)
  • 微信小程序、h5兼容性问题(1)

    1. 微信小程序中border-image 设置渐变 导致border-radius 不生效。 不建议两者同时使用,实测ipone12 不兼容, ipone 12以上正常显示。可以使用背景图片代替。 2. h5 使用原生table tr、th、td封装表格,在ios 中样式失效 建议使用dev 整体布局。 3. 企业微信群二维码插件materialPlugin、cell

    2023年04月09日
    浏览(61)
  • 【H5】H5安卓、ios兼容性问题

    H5在安卓机型和IOS机型或者相同机型的不同浏览器中的某些样式会存在不一样的表现,所以需要解决相应的兼容性问题 1、IOS端兼容input光标高度 问题症状:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样

    2024年02月16日
    浏览(60)
  • vite项目低版本浏览器兼容性问题

    技术: vite+vue3.2+ts+element-plus 开发环境没有问题,但是打包后的代码放到正式环境,页面空白... 现场的小伙伴发来报错问题  Uncaught SynntaxError:Unexpected token ? 纳尼,这这这...什么原因,一头雾水 用火狐浏览器访问,没有报错,开始狂摆...时间一点点流逝,全网没有找到解决

    2024年02月09日
    浏览(47)
  • uniapp微信小程序兼容性问题记录(持续记录)

    “vue”: { “version”: “2.6.14” } “uview-ui”: { “version”: “1.8.7” }, 用如上方式在H5端运行时没有问题的,但在微信小程序端就找不到组件,所以修改为全部在main.js中引入 官方解释如下 https://ask.dcloud.net.cn/question/145410 H5端运行效果 微信小程序端运行效果 一开始以为:style没

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包