ecmascipt
- IE6-8 函数声明和函数表达式 - ie6-8函数名标识符里面可以有 ., 标准浏览器会报错,如下代码片段一
- ie6-8函数表达式标识符key被外部访问,标准浏览器只能用于内部访问,如下代码片段二
 //标准报错
 function A(){}
 function A.prototype.b(){}
 var a=new A();
 alert(typeof a.b);
 - //ie6-8能取到,标准浏览器不行 
 var a=function b(){};
 alert(typeof b);- 解决方法:不要使用带 - .的函数名标识符,函数表达式标识符不要作为引用的目的出现,出现在标识错误匿名函数等。
- ie6-8函数名标识符里面可以有 
- Firefox对条件语句块内部函数声明处理有差异 - //其它浏览器不管 true或者false,都是2,firefox是1 //规范定义是函数声明之后出现在全局环境或者函数体里面,在判断块里面当作是在函数里面,所以后面的会覆盖前面的 function foo(){ if(true){ function bar(){alert(1);} } else{ function bar(){alert(2);} } bar(); foo();
- 各浏览器中 Date 对象的 getYear 方法的返回值不一致 
 根据规范,这个方法将返回当前时间的年份值与 1900 的差值,如 1800 年返回 -100,2010 返回 110。但 IE 仅在一个 1900 - 1999 年之间的日期值上调用 getYear 方法时,减去 1900,在其他的日期中返回的是实际的年份,就和 getFullYear 一样。
 解决办法
 使用Date.prototype.getFullYear() 代替
- ie6-8不支持JSON对象及其方法
- Chrome Opera 中 for-in 语句遍历出对象属性的顺序与定义的不同,不要依赖key的排序
- IE6-8不能在 JSON 字符串或对象直接量的最后一个键值对后加 ‘,’
- IE6不能使用下标来访问字符串
- 各浏览器中用 for in 可以遍历对象中被更新的内置方法存在差异
- IE6,IE7,IE8不会忽略数组直接量的末尾空元素
- 元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
- Array.prototype.sort当使用了 comparefn 后返回值不为 -1、0、1时,各引擎实现排序结果不一致
##dom
- IE6 IE7 IE8(Q) 中的 getElementById 方法的参数不区分大小写
- IE 在创建 DOM 树时会忽略某些空白字符
