2013-10-29 3 views
0

저는 최근에 대상이되는 ECMAScript 3 (ES3) 인 Visual Studio를 사용하여 비교적 복잡한 시뮬레이션 엔진을위한 TypeScript 프로젝트를 만들었습니다. 내 타이프 라이터 클래스에서 실제 속성을 사용하기 시작하고 싶었다 그래서 나는과 같이, ES5를 대상으로 내 프로젝트 파일을 갱신 :TypeScript - 객체가 'defineProperty'속성 또는 속성을 지원하지 않습니다.

<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <TypeScriptTarget>ES5</TypeScriptTarget> 
    <TypeScriptRemoveComments>false</TypeScriptRemoveComments> 
    <TypeScriptSourceMap>true</TypeScriptSourceMap> 
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind> 
</PropertyGroup> 
<PropertyGroup Condition="'$(Configuration)' == 'Release'"> 
    <TypeScriptTarget>ES5</TypeScriptTarget> 
    <TypeScriptRemoveComments>true</TypeScriptRemoveComments> 
    <TypeScriptSourceMap>false</TypeScriptSourceMap> 
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind> 
</PropertyGroup> 

을 지금은 IE (V10) 내 응용 프로그램을 실행할 때, 나는 런타임을 얻을 예외 : "0x800a01b6 - JavaScript 런타임 오류 : 개체가 'defineProperty'속성 또는 메서드를 지원하지 않습니다." 다른 브라우저 (예 : Firefox, Chrome)로 애플리케이션을 시작하면 예상대로 작동하지만 오류는 발생하지 않습니다. IE가 예상대로 작동하지 않는 이유를 찾지 못하는 것 같습니다. 나는 일반적으로 내 IE 브라우저가 'defineProperty'를 지원한다는 것을 확인한 웹 사이트를 발견 했으므로 현재 개발 중에는 작동하지 않는 이유에 대해 정말 당황 스럽다. VS에서 내 TypeScript 코드를 디버깅 할 수 없어 특히 중요합니다. 이견있는 사람?

+0

IE10이 IE8 호환 모드에서 코드를 실행하고 있습니까? – serg10

+0

당신은 그것을 못 박았습니다. 호환 모드를 변경하면 캐시가 삭제 된 것과 함께 작동 할 수 있습니다. 스크립트를 시작하고로드하는 동안 수많은 예외가 발생할 것이므로 모든 TypeScript 참조를 주석 처리 할 때까지 IE의 상태를 검사 할조차 수 없었습니다. 귀하의 회신에 감사드립니다. – 7dino7

답변

6

ES5 호환성 테이블 Object.defineProperty is supported in IE9 and above에 따르면.

IE8의 지원은 제한되어 있습니다.

그러나 IE10은 같은 페이지가 인터넷을 통해 정상 모드로 실행 되더라도 로컬 및 인트라넷 페이지를 호환 모드로 실행하는 습관이 있습니다.

당신은 도구 대화 상자에서 변경할 수 있습니다

> 호환성보기 설정 (옵션 "호환 모드에서 디스플레이 인트라넷 사이트"를 제거 당신이 올바른 DOCTYPE의 조합을 사용하여 방지 할 수 있습니다.

<!DOCTYPE html> 

을 또는 더 이상 IE11에서 이상.

<meta http-equiv="x-ua-compatible" content="IE=edge"> 

할 필요가 없습니다 (또는 지원) 될 user-agent compatibility tag는, 이것은 <head> 요소 내의 첫 번째 태그해야합니다.

+1

알아두면 좋은 정보. 감사! – 7dino7

+0

Windows XP의 IE8은 해당 태그를 신경 쓰지 않으므로 IE 8 이상을 실행하는 사람들 만이 호환 모드로보고있었습니다. – cchamberlain

1

는 HTML 파일의 첫 번째 줄은

<!doctype html> 

이 호환성 모드 해제 ES5 기능에가는 IE를 방지 할 수 있는지 확인합니다.

+0

흠, 나는 내 'default.htm'파일에서 그 모든 것을 보았습니다. 그러나 여전히 호환성 모드에서 실행 중이었습니다. – 7dino7

+0

@basarat 내 index.html에 이 있는데 IE11에서이 오류가 계속 발생합니다. –

관련 문제