浏览器 Date与json 对象的兼容问题

浏览器 Date与json 对象的兼容问题

最近遇到了两个浏览器的兼容问题,在此记录下来。

new Date 的浏览器兼容

在使用某个时间选择器插件时,判断选择时间小于当前时间时,在 IE11 浏览器下面判断出错,chrome 表现正常。

找到判断错误代码,如下:

if(new Date(contentStartTime).valueOf() > new Date().valueOf())

因为在 chrome 表现正常,IE11 下也没有报错,但是 IE11 的判断却产生问题,那我们就在 IE 下打印分析两个值,发现果然有问题。

new Date(contentStartTime) //返回值 invalid date

new Date(contentStartTime).valueOf() //返回值 NaN

那应该是 contentStartTime 这个值有问题,经查看服务器返回的值为 ‘2018-11-29 00:00:00’

原来,'xxxx-xx-xx 00:00:00’是无法在各个浏览器中使用new Date()来执行的(貌似火狐也有这种问题)。

基于’/'格式的日期字符串,才是被各个浏览器所广泛支持的,‘-’连接的日期字符串,则是只在 chrome 下可以正常工作。

所以原代码的值 NaN 和 new Date().valueOf() 对比,永远返回 false 导致判断出错。

最后改成:

new Date(contentStartTime.replace(/-/g,"/")).valueOf() > new Date().valueOf())

Json 对象的浏览器兼容

在向服务器请求返回 Json 时,像一些移动端低版本浏览器以及部分 IE 浏览器是无法识别 Json 对象的。

比如返回 Json 对象为:

{"body":{......},"returnCode":"010","returnMsg":"操作成功"}

var json = 返回的Json

在你使用 json 的属性时,如 json.body 时,就会报错:

无法获取未定义或 null 引用的属性 “body”

所以,在 Json 返回处添加兼容写法

if (typeof json == 'string') { 
    try { 
        json = JSON.parse(json)
    } catch (e) {
        console.log('response result parse error ' +e);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值