解决 IE 对象不支持 JavaScript 方法 Object.keys - 文章教程

解决 IE 对象不支持 JavaScript 方法 Object.keys

发布于 2019-08-07 字数 1282 浏览 2903 评论 0

之前使用使用过 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扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2891 文章
评论
84935 人气
更多

推荐作者

勿忘心安

文章 0 评论

ekko

文章 0 评论

江挽川

文章 0 评论

献世佛

文章 0 评论

Meets

文章 0 评论