2012-12-05 2 views
10

Internet Explorer에서 일부 j를 디버깅하려고 시도했지만이 문제를 해결할 수 없습니다.IE 문제 - Object.keys (value) .length 지원되지 않음

var numberOfColumns = Object.keys(value).length; 

그리고 오류가 ... 처음에

Message: Object doesn't support this property or method 
Line: 640 
Char: 5 
Code: 0 
URI: xxx 

나는 어쨌든 나를 위해 (이상하게는 Object.keys(value).length; 재산 함께 할 수있는 뭔가가 있다고 생각하지만, 다음은 오류의 원인이되는 라인이다) 오류가 char 5, 변수 이름의 시작 부분에 있습니다.

어쨌든, 나는 무슨 일이 일어나고 있는지 또는 어떻게 수정해야하는지 전혀 모른다. 또한, 경우에 내가 대체 :

var numberOfColumns = Object.keys(value).length; 

으로 ...

var numberOfColumns = 9; // troubleshooting 

을 오류가 지속됩니다. 도와주세요.

는 업데이트

jsFiddle는

http://jsfiddle.net/4Rab7/

+0

방화 광이나 다른 디버그 도구로 실행 해 보셨습니까? – AMember

+0

더 많은 코드를 보여줄 수 있습니까? 문제가있는 jsfiddle을 표시 할 수 있습니까? – AMember

+0

오류가있는 코드를 기본이 아닌 코드로 바꾸면 여전히 실패합니다. 문제는 다른 것입니다. –

답변

19

keys 속성은 IE> = 9에서 지원됩니다. 이전 버전에서 테스트했을 가능성이 큽니다. 간단한 해결 방법은 다음과 같습니다 http://jsfiddle.net/vKr8a/

더 많은 정보를 원하시면이 호환성 표를 참조하십시오 : 여기

var length = 0; 
for(var prop in data){ 
    if(data.hasOwnProperty(prop)) 
     length++; 
} 

이 데모입니다

또는

http://kangax.github.com/es5-compat-table/

+0

신난다. 방금 해결책을 찾아 냈지만 너는 내 것보다 훨씬 간단하고 (더 나은) http://jsfiddle.net/xDfBZ/이다. 나는 너의 것과 확실히 갈거야 – veryConfused

+0

http://jsfiddle.net/t8EfF/1/ – noob

+0

이것은'prop' 글로벌 바를 오염시킨다 –

4

Object.keys 인 ECMAScript 5 판에 소개되었습니다했다. 따라서 IE 버전이 9보다 낮 으면 지원되지 않습니다.

12

, 당신은 브라우저 권장 polyfill을 사용할 수있는 기본적으로 지원하지 않음 Object.keys

Object.keys=Object.keys||function(o,k,r){r=[];for(k in o)r.hasOwnProperty.call(o,k)&&r.push(k);return r} 
+0

깨끗하고 간단하며 효과적입니다. – Piyush