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

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即可。 (该方法可以解决问题,但是会有延迟,影响用户体验)
在这里插入图片描述

发布了27 篇原创文章 · 获赞 4 · 访问量 6290

猜你喜欢

转载自blog.csdn.net/studentenglish/article/details/94661317