浏览器兼容性之ECMAScript

1 IE中不能操作TR标签的innnerHTML。

2 日期处理函数不一致。

(1)IE 8- new Date().getYear()返回的是到当前日期到1900年的差值,FF返回的是当前的年。

(2)在处理构造函数传入的字符串时,如果字符串不符合标准,opera的解析是转化为当前的日期 如,“January 32,2007” 如果这个代码是在2007年1月21号运行,那么构造出的对象就是2007年1月21号,有的浏览器则是转化为2007年2月1号。

3 使用typeof操作符检测函数时,会返回"function"。Safari 5-以及chrome 7- 在使用typeof检测正则表达式时候返回“function”。ECMA-262在任何内部实现call方法的对象都应该返回“function”,因为上述浏览器对正则表达式也实现 了这个方法,所以返回“function”。但在IE和Firefox中返回“object”。

4 IE 8-在捕获的错误对象添加到执行环境的对象中,即在catch语句外部也可以访问错误对象,IE 9修复了这个bug。

5 IE 8-并不把DOM和BOM当做原生对象,所以他们的垃圾回收机制是引用计数法,使用不当会产生循环引用的bug,,内存泄露,影响内存的使用效率。

var element = document.getElementById('ID');
var myObject = new Object();
myObject.element = element;
element.someObject = myObject;

IE 9+修复了这个bug。所以最好手动断开JavaScript对象和DOM之间的连接:

myObject.element = null;
element.someObject = null;

 6 RegExp:(1)关于exec方法,在使用全局模式匹配时,lastindex会随着exec的执行次数不断发生变化,在IE中即使在非全局模式下也会发生变化。

(2)

原文地址:https://www.cnblogs.com/bdbk/p/3910263.html