解决 IE 对象不支持 JavaScript 方法 Object.keys
之前使用使用过 jOrgChart 这款组织结构图插件,在IE8里面一直都是报错,但是在其它的浏览器里面就不会报错,寻找了很多方法似乎是浏览器的 JavaScript 引擎不支持某些方法,例如这个方法:
this.newNode = function(parentId){ var nextId = Object.keys(nodes); nextId = $(nextId).size(); while(nextId in nodes){ nextId++; } self.addNode({id:nextId, name:'', parent:parentId}); }
在IE8以下的浏览器中,会报对象没有这个属性的错误,查询资料才得知,Object.keys 方法是 ES5 中的函数,IE8 浏览器不支持,不过我们可以通过插件框架或者修改源码的方式得到解决。
ES5-shim
如果你想使用兼容ES5的所有特性。建议你使用 ES5-shim 来在不支持ES5特性的浏览器中增加ES5的支持,你可以引入这里的js。之后你的代码里就可以在任何浏览器上放心的使用ES5中的特性了。
<script src="js/es5-shim.min.js"></script>
自定义方法
如果你仅仅只是为了解决此处的 Object.keys,可以不用 ES5 的函数,而用普通的方式解决如下:
this.newNode = function(parentId){ var nextId = []; for(var p in nodes){ if(nodes.hasOwnProperty(p)){ nextId.push(p); } } nextId = $(nextId).size(); while(nextId in nodes){ nextId++; } self.addNode({id: nextId, name: '', parent : parentId }); }
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。


目前还没有任何评论,快来抢沙发吧!
发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。