前端开发---分享几个移动端兼容问题(锁屏时间差、点透问题、时间转换)

1. 移动端锁屏时间差问题,息屏锁屏以及页面切换导致的时间差问题解决

场景:
在移动开发过程中,遇到这样一种情况,要求在移动端商城首页设计一个气泡功能,来营造节日的火爆气氛,也就要求气泡要一直运行。但是当用户将当前页面放置在后台页面运行,或者手机息屏之后再打开直接进入当前页面,会出现气泡重叠的问题。

原因:
移动端页面进入后台、将浏览器调整到后台或者锁屏时,浏览器的一切活动会停止运行。当再次进入当前页面时运行和当前时间会有一个时间差。移动端任务刷新倒计时在锁定屏幕后暂停执行了(暂停了倒计时),再次解锁屏幕后倒计时从锁定屏幕时的时间开始,因此存在较大的误差。

解决方法: 为document添加visibilitychange事件,监控docuement的visibilityState属性,获知当前页面的唤醒和关闭状态,具体操作方法如下

在这里插入图片描述


2. 时间转换:Date对象获取时间戳,在 android 手机上显示正常,但是在 ios 系统上显示 NaN。

bug如下:
----- windows上显示正常 , 移动端浏览器显示正常
var time = new Date('2015-03-06').getTime()
----- windows上显示正常 移动端浏览器显示NAN
var time1 = new Date('2015-03-06 12:00:00').getTime()

解决方法:
兼容 ios 和 android 用 / 类型的时间格式:

let time = new Date('2015-03-06 12:00:00'.replace(/-/g, '/')).getTime()


3. 移动端点透问题

原因:
鼠标事件: mousedown、mouseup、mousemove和click事件
touch事件: touchstart、touchmove、touchend
手机上没有鼠标,手机却能响应mouse事件(其实是借助touch去触发mouse事件)。而手机端对touch事件相应速度快于mouse事件,且会同时触发touch和mouse事件,mouse事件有300ms延迟。

解决方案: (避免上层触发touchend,而下层触发click事件)

1… 上层元素touchend后隐藏, 下层元素click 后隐藏, 那么在商城的执行函数中阻止默认事件即可在这里插入图片描述
2.上下两层元素都绑定相同的事件,如都绑定click 或者 touchend事件。
在这里插入图片描述
3… touchend 事件的函数内, 执行settimeout ,延时300ms即可。 (该方法可以解决问题,但是会有延迟,影响用户体验)
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值