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

发布于 2019-08-07 20:01:00 字数 1021 浏览 3371 评论 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 });
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

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

0 文章
0 评论
84960 人气
更多

推荐作者

沧笙踏歌

文章 0 评论 0

山田美奈子

文章 0 评论 0

佚名

文章 0 评论 0

岁月无声

文章 0 评论 0

暗藏城府

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文