Tree JavaScript代码无法与Internet Explorer一起使用

用户名

我需要帮助来修复JavaScript程序中的错误。该程序在Google chrome和firefox上可以正常运行,但是该代码在Internet Explorer 8上无法正常工作,并给出了下面提到的奇怪错误。请有人给我一个针对我程序的解决方案。小提琴链接如下

错误是:

SCRIPT438: Object doesn't support property or method 'keys'
File: treelist.js, Line: 12, Column: 13

小提琴


var dataSource = {
            "Watch": {
                "Titan": {},
                "parent": {
                    "leaf1": {},
                    "leaf2": {}
                },
            }
        },
    traverseObject = function (obj) {
        var ul = document.createElement("ul"),
            li;

        for (var prop in obj) {
            li = document.createElement("li");
            li.appendChild(document.createTextNode(prop));
            li.onclick = function(e) {
                var classNames = e.currentTarget.className;
                if (classNames.indexOf("hidden") == -1) {
                    e.currentTarget.className += "hidden";
                } else {
                    e.currentTarget.className = e.currentTarget.className.replace("hidden", "");
                }
                e.stopPropagation();
            }

            if (typeof obj[prop] == "object" && Object.keys(obj[prop]).length) {
                li.appendChild(traverseObject(obj[prop]));
            } else {
                li.className += "leaf";
            }
            ul.appendChild(li);
            console.log(ul);
        }
        return ul;
    };


window.onload = function () {
    document.getElementById("dvList1").appendChild(traverseObject(dataSource));
}

谢谢

奥帕伦苏埃拉

IE8不支持成员声明末尾的逗号。

尝试删除它们,它应该可以工作:

 dataSource = {
        "Watch": {
            "Titan": {},
            "parent": {
                "leaf1": {},
                "leaf2": {}
            }, <-- remove this
        }

除此之外,您还引用了IE8不支持的“ Object.keys”:

  if (typeof obj[prop] == "object" && Object.keys(obj[prop]).length)

您可以通过添加以下内容来解决它:

if (!Object.keys) {
   Object.keys = function(obj) {
      var keys = [];

      for (var i in obj) {
         if (obj.hasOwnProperty(i)) {
            keys.push(i);
         }
      }  

      return keys;
   };
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React JS无法与Internet Explorer 9一起使用

.contains()无法与BufferedReader一起使用

Android Device Monitor File Explorer无法与运行API 24+的模拟器一起使用

当Angulars $ http.post与大型/复杂json数据集一起使用时,Internet Explorer 11崩溃

FileProvider无法与相机一起使用

占位符不与Internet Explorer一起使用

DynamicVariable无法与Future一起使用

$ {foo //(// \(})无法与extglobs一起使用

SQLite R * Tree索引不与DISTINCT一起使用

Web开发人员的JavaScript代码无法与我的html网站一起使用

@RequestBody无法与@JsonProperty一起使用

Activityindicator无法与FFImageLoading一起使用

Firebase Cloud Messaging无法与Samsung Internet一起使用

supportFragmentManager无法与Kotlin一起使用

CSS无法与DOMPDF一起使用

COALESCE无法与CodeIgniter一起使用

为什么JavaScript样式可以与Internet Explorer以外的所有浏览器一起使用?

Xuggler无法与Webapp一起使用

声音无法与PlaySound一起使用

addObject无法与NSMutableSet一起使用

CSS无法与bootstrap一起使用

AngularJS代码无法与NodeJS一起使用

保存JSON无法与代码一起使用

量角器硒localStorage.clear()无法与Internet Explorer一起使用

jQuery无法与Ajax返回的代码一起使用

可以将Internet Explorer与Docker一起使用吗?

rm无法与[]一起使用

代码与终端中的节点一起使用时,JavaScript文件无法工作

GradientPaint无法与itextPdf一起使用