zoukankan      html  css  js  c++  java
  • 记录兼容IE8中发现的一些问题

    一.new Date().getYear();

    chrome下:获取的是1900年之后的年份,如2017年获取的是117

    IE8下:获取的是公元年份,如2017获取的是2017

    解决方案:使用new Date().getFullYear();,统一获取公元年份,如2017获取的是2017

    二.parseInt()

    parseInt在解析开头为0的数字,如"09"时

    chrome下:默认作为10进制处理,09解析为9

    IE8下:开头为0,作为8进制处理,09解析为1

    解决方案:

    1.parseInt(new Number("09"))转换为Number类型,默认是10进制的

    2.parseInt("09"-0),通过-0的方式强制转换为Number类型,本质和方法1相同

    3.parseInt("09",10),指定使用10进制解析

    三.for(var i in Array)

    for-in语法循环时,返回的是所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包含原型中的属性,

    如果原生Array类被其他的js脚本库进行了原型扩展(比如多加一个toJSON方法即Array.prototype.toJSON=xxxx),那么用for in遍历扩展后的Array对象的逻辑将与遍历原生Array对象的逻辑发生差异

    chrome下:没有问题

    IE8下:IE8下没有__proto__属性,所以对原型链的支持有问题,同时也存在屏蔽不可枚举属性的实例属性的问题。结果就是会导致多循环或少循环。

    解决方案:

    采用for-loop,即for(var i = 0; i < Array.length; i++)

  • 相关阅读:
    如何更好地理解闭包
    抽象类和抽象方法以及和接口区别
    JavaScript中如何理解如何理解Array.apply(null, {length:5})
    Java线程中的同步
    Python前世今生以及种类、安装环境
    大数据中的用户画像
    Java web每天学之Servlet工作原理详情解析
    Go语言操作MySQL数据库
    老集群RAC双网卡绑定
    nmcli配置ipv6
  • 原文地址:https://www.cnblogs.com/Orange42/p/7580700.html
Copyright © 2011-2022 走看看