[문제점]
폰갭으로 생성한 HTML 파일을 로딩하는 런처를 C#의 WebView Component
를 이용하여 개발하였는데 실행 시에 JavaScript 오류가 발생되며 정상적인 동작이 안되는 문제가 발생됨.
[원인]
C#의 WebView
는 실행 환경의 최신 IE브라우저를 사용하는 것이 아닌 내장된 브라우저를 사용하기 때문에 버전이 낮아 발생됨.
[해결]
레지스트리 위치
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION\
InnoSetup
을 이용한 인스톨 시점에 Registry 값을 추가해줌으로 문제를 해결 할 수 있음.
주의사항
Windows Vista 이후부터는 64Bit 운영체제의 경우 HKEY_LOCAL_MACHINE의 경로가 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\
로 변경됨.
스크립트
[Code] function InitializeSetup(): Boolean; var V:String; var subkey:String; var ieVersionValue:Cardinal; begin // 현재 브라우저 버전을 조회한다. IE11: 11.0.9600.18015 RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Internet Explorer', 'svcVersion', V); // 브라우저 버전의 두자리를 가져온다. 11 or 10 v := Copy(V, 0, 2); subkey := 'SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION'; ieVersionValue := 11001; if v = '10' then begin ieVersionValue := 10001; end; // 레지스트리에 쓰고 저장한다. RegWriteDWordValue(HKLM, subkey, '{#MyAppExeName}', ieVersionValue); Result := True; end;