2014-04-22 3 views
0
에서 속성 또는 메서드 '키'를 지원하지 않는 객체

나는 점점 오전 오류 : SCRIPT438 : 개체가 속성 또는 메서드를 지원하지 않습니다 '키' IE8의 경우 사용하여 PDF 보고서를 생성하려고 도서관 jspdf.debug.js. 이 라인에 SCRIPT438 : IE8

File: jspdf.debug.js, Line: 362, Column: 4 

는 : var fontKey = 'F' + (Object.keys(fonts).length + 1).toString(10),

모든> IE 8 버전에서 잘 작동하지만 난 IE8 강타되었다.

제발 내 문제를 해결하는 데 도움이됩니다. 감사.

+0

BTW, [* Array.prototype.toString *] (http://ecma-international.org/ecma-262/5.1/#sec-15.4.4.2)는 인수를 허용하지 않으므로, 10 '은 무시됩니다. – RobG

답변

1

MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys에 따르면 Object.keys 메서드는 IE 9 이상에서만 지원됩니다. Object.keys 메서드는 개체 속성 이름의 배열을 반환합니다.

도서관 브라우저 호환성을 확인하십시오. 다른 장애물이있을 수 있기 때문입니다.

+0

+1하지만 호스트 객체 (예 : DOM 요소)를 네이티브 메소드 (* this *)로 전달할 수 있으므로 MDN의 polyfill에 너무 열광하지 않아 오류가 발생할 수 있습니다. 코드가 오류에 매우 취약한 브라우저에서만 실행된다는 점을 감안할 때이를 피하는 것이 좋습니다. 마찬가지로 * Object.keys *를 지원하지 않는 호스트는 엄격 모드를 지원할 가능성이 거의 없기 때문에 * strict * 사용은 무의미합니다. – RobG

+0

RobG, 호스트 객체가 네이티브 메소드에 전달 될 때 간단한 오류 테스트 케이스를 제공 할 수 있습니까? 또는 약간의 독서를 가리킬 수 있다면. 흥미로운 문제 =) – Olga

+1

IE 8에서는 : var x = Array.prototype.slice.call (document.getElementsByTagName ('*'));' – RobG

0

jspdf.debug.js 파일의 맨 아래를 보면 Object.keys 폴리 필을 찾을 수 있습니다. 문제는 최근에 추가 된 PNG 지원이 이전 브라우저에서 라이브러리 초기화를 위반하여 Polyfill 코드에 도달하지 못하는 것입니다. 이것은 fixed 이었으므로 새로운 1.0.119 version을 시도해보십시오.

@RobG : 이상한 전화 .toString(10)도 삭제되었습니다. 감사합니다 :)