IE8及其以下版本会有哪些兼容性问题
不支持console
IE8及其以下版本下使用console会报错:console未定义。
需要自定义console函数,代码如下:
//解决ie浏览器console未定义的问题
window.console = window.console || (function () {
var c = {};
c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile
= c.clear = c.exception = c.trace = c.assert = function () { };
return c;
})();
不支持trim() 等函数,不支持Map等对象,不支持 等元素
IE8及其以下版本下使用一些函数或对象会报错:对象不支持此属性或方法。
解决办法仍然是自己编写代码去实现想要的功能或者引入相关js文件。
对标识符敏感,语法要求严格
IE8及其以下版本对于语法要求特别严格,如果控制台报语法错误、缺少标识符、由于出现错误 xxx 而导致此项操作无法完成,请务必检查:
- 括号是否有多余或遗漏
- 是否有多余的标点符号,例如json对象最后的逗号多余:{a:‘1’, b:‘2’,}
- 注释是否规范
- js脚本加载顺序是否正确
for in 会比预期多循环一次
IE8及其以下版本使用循环for(var v in obj){}会比预期多循环一次,因为for-in循环是对对象每个属性(包括对象原型链的属性)的枚举,这会导致很多错误的发生。解决方法当然是使用其他形式的循环。
当然,IE还有很多兼容性问题,尤其IE8及其以下版本,如果大家还遇到其他兼容性问题,欢迎指出。