Background Information
我在这里描述了'm having the same problem that':Object.keys not working in internet Explorer本质上,我在IE中失败了 .
我试图将上面帖子中提出的解决方案改编为我的代码,但它不起作用 .
这是原始代码的样子 - 我只显示围绕Object.keys调用的代码:(在chrome中工作)
for (var key in res) {
if (Object.keys(res[key]['associated_users']).length > 0 ) {
//do something here to build htmlstring with data
} else {
htmlstring += "<td> </td>";
}
} //end for loop
在IE 9中,系统在调用Object.keys方法的行上失败 .
我尝试在ajax成功处理程序中的循环之前添加以下逻辑,以检查浏览器是否支持Object.keys:
var len = 0;
if (!Object.keys) {
var temp = keyslengthforIE(res);
len = temp.length;
} else {
len = Object.keys(res[key]['associated_users']).length;
}
if (len > 0 ) {
//do something here to build htmlstring with data
} else {
htmlstring += "<td> </td>";
}
这就是新功能“keyslengthforIE”的样子:
function keyslengthforIE(obj) {
var keys = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
keys.push(i);
}
}
return keys;
}
Problem
我的代码有两个问题,我不知道如何修复 .
- IE在看到对Object.keys的调用时仍然会抱怨 . 我得到错误“Object.keys:参数不是一个对象”,它指向第319行 . 第319行是这样的:
len = Object.keys(res [key] ['associated_users']) . length;
- 从新函数返回的len实际上是错误的 . 我知道它应该是10但我得到1 .
任何建议,将不胜感激 .
编辑1
现在我知道IE 9支持它,我看到了我的错误 . 将发布回答
1 回答
我不得不改变原始代码:
看起来像这样: