SCRIPT438:对象不支持属性或方法'keys'
使用IE 9.0.8112.16421我收到此错误,但并非总是如此。两个环境中完全相同的应用程序和代码。一个在Intranet主机上运行JBoss,另一个在localhost上运行Jetty。前者给出错误。
这是失败的代码:
return $.get('/rest/typeaheads/' + query, function(data) {
lastResults = data;
> return process(Object.keys(lastResults)); <
});
我有一个map的lastResults,它是通过ajax-call作为json对象接收的。我理解Object.keys(...)不适用于宿主对象,但我的json对象肯定不是宿主对象?
那怎么会发生这种情况以及两种环境之间的区别呢?
答案 0 :(得分:1)
显然; IE 9将在Intranet环境中假设您的所有Intranet应用程序都是废话。因此它将进入“兼容模式”。在“兼容模式”下,它将模拟IE 7。
我的解决方案是添加一条通知,警告用户该问题,并提供关闭“兼容模式”的说明。
此外,如果我需要支持IE7,这对我来说不再是问题。我已经开始使用下划线库,它提供了自己的函数来检索键。
答案 1 :(得分:0)
你可以尝试自己动手:
Object.keys = Object.keys || function keys(obj) {
var ret = [];
for (var prop in obj) if (obj.hasOwnProperty(prop)) ret.push(prop)
return ret;
}