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++)

  • 相关阅读:
    第05组 Beta版本演示
    第05组 Beta冲刺(4/4)
    第05组 Beta冲刺(3/4)
    第05组 Beta冲刺(2/4)
    第05组 Beta冲刺(1/4)
    第05组 Alpha事后诸葛亮
    第05组 Alpha冲刺(4/4)
    第05组 Alpha冲刺(3/4)
    第05组 Alpha冲刺(2/4)
    300iq Contest 3 C. Cells Blocking
  • 原文地址:https://www.cnblogs.com/Orange42/p/7580700.html
Copyright © 2011-2022 走看看