解决 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 }); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论