前端开发中遇到的ios兼容性问题及解决

本文主要讨论了在前端开发中遇到的iOS设备日期兼容性问题,提出了使用newDate(年,月,日,小时,分钟,秒)格式创建日期对象以及通过替换短横线来解决日期字符串解析的方案。此外,还提到了iOS下beforeunload事件被废弃,推荐使用pagehide事件替代以保持事件兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端开发中遇到的ios兼容性问题及解决

日期的兼容性

  1. iOS下new Date('2020-03-11 00:00:00')不生效,可以使用new Date(2020,03,11,0,0,0')替代,也可以对日期进行date.replace(/-/g, '/')处理。
/**
 * 在保险期为1年的规则下,获取终保日期的值
 * @param {起保日期} start_date 
 */
const getEndDate = (start_date) => {
    if (!start_date) {
        return '';
    }
    //eg:start_date='2020-03-11 00:00:00'  =>'2021-03-11 00:00:00'
    let tempDate = start_date.replace(/^[1-9][0-9]{3}-/g, `${Number(start_date.substring(0, 4)) + 1}-`);
    //iOS不兼容new Date('2020-03-11 00:00:00'),可以使用new Date(2020,03,11,0,0,0')
    //也可以使用 replace(/-/g, '/')
    tempDate = tempDate.replace(/-/g, '/');
    //eg:=>'2021-03-10 23:59:59'
    tempDate = new Date(new Date(tempDate).getTime() - 1);
    return dateFormat(tempDate);
}
/**
 * 对日期进行格式化:yyy-mm-dd hh:mm:ss
 * @param {日期类型的日期} date 
 */
const dateFormat = (date) => {
    if (!date) {
        return '';
    }
    if (!(date instanceof Date)) {
        return date;
    }
    var y = date.getFullYear();
    var mon = date.getMonth() + 1;
    var d = date.getDate();
    var h = date.getHours();
    var m = date.getMinutes();
    var s = date.getSeconds();
    h = (h < 10) ? ('0' + h) : h;
    m = (m < 10) ? ('0' + m) : m;
    s = (s < 10) ? ('0' + s) : s;
    return `${y}-${mon}-${d} ${h}:${m}:${s}`;
}

事件兼容性

ios下beforeunload事件废弃了,需要使用pagehide事件替代。

	window.addEventListener("beforeunload",()=>{
      setRootSessionItem(this.$store.state);
    });
    //IOS废弃了beforeunload事件,故用下面的代替
    window.addEventListener("pagehide",()=>{
      setRootSessionItem(this.$store.state);
    })

目前遇到的就这几个,持续更新~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值