我的JavaScript需要一些帮助。我的JavaScript代码不能在Internet Explorer 8上运行,它会在控制台上显示空白显示和一些错误代码,请为我提供一些解决方案,以便在Internet Explorer上使用此JavaScript代码。以下是小提琴的链接:
错误代码
SCRIPT438:对象不支持属性或方法'keys' 文件:treelist.js,行:12,专栏: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));
}
答案 0 :(得分:1)
您的代码使用Object.keys()
,Internet Explorer 8不支持该版本(IE9中引入了支持)。 MDN has more information,包括您可以用来修复问题的填充物。只需将其粘贴到相关的Javascript文件中即可。
正如Zach L所指出的,您的代码也使用了e.stopPropogation()
。这也是IE8不支持的(再次,它是在IE9中引入的)。您可以使用MDN has more information和Jonathan T. Neal has a polyfill来解决问题(这是文章末尾的addEventListener
代码)。再次,只需将其粘贴。