前端代码IE11兼容性问题(1)

一、背景: 

项目中部分前端代码在谷歌浏览器可以正常访问,切换到IE浏览器后报错

二、报错:

const date = new Date(data.createdDate);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); //月份需要加1,且不足两位数的要补0
const day = String(date.getDate()).padStart(2, '0'); // 日要保证两位数,不足的也要补0
const formattedDate = `${year}-${month}-${day}`;

以上是报错信息,formattedDate 为199行代码

三、排查原因:(略过原因直接看解决方法的直接下一步)

在IE浏览器中,模板字面量(template literals)可能不被完全支持,特别是在较早的IE版本(如IE11及更早版本)。模板字面量是ES6引入的一项新特性,它允许我们使用${}来插入变量和表达式。

我们的代码块:

const formattedDate = `${year}-${month}-${day}`;

在IE中,可以通过使用传统的字符串拼接方式来实现相同的效果,即使用加号(+)连接字符串:

const formattedDate = year + '-' + month + '-' + day;

这种方法在所有主流浏览器中都能很好地运行,包括IE。这是因为字符串拼接是JavaScript的基本功能,几乎所有的浏览器都支持。

总结起来,为了在谷歌浏览器和较早的IE浏览器中都能够兼容,建议使用传统的字符串拼接方式而不是模板字面量。

四、解决

将199行代码修改为:

const formattedDate = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值