사진출처 왼쪽: http://44counting.blogspot.kr/2011/09/car-news-mini-coupe.html
사진출처 오른쪽: http://www.mjjq.com/blog/archives/964.html
글 맨 마지막에 이 '꼼수'의 부작용 내용이 추가되었습니다. 꼭 읽어주세요.
앱을 만들다 보면 일부 기능을 웹뷰를 통해 웹사이트의 몇몇 페이지로 연결하곤 합니다.
이때 필요한 것이 지금 웹페이지를 로딩한 IE10이 클래식(Classic, Desktop용)버전인지 메트로(Metro)버전인지 구분하는 방법입니다.
User-agent string으로는 두 가지가 구분이 안 됩니다. 그럼 어떻게 해야 할까요?
이 바닥의 진리 중 하나는 "나 혼자만 궁금해 하는 것은 없다."입니다. 지구 반대편에 있는 개발자 누군가도 같은 고민을 하기 마련이지요.
당연히도 stackoverflow.com에 관련 문답이 있어 방법을 정리하였습니다.
출처 : http://stackoverflow.com/questions/8751479/javascript-detect-metro-ui-version-of-ie-10
function isActivexEnabled() { var supported = null; try { supported = !!new ActiveXObject("htmlfile"); } catch (e) { supported = false; } return supported; } if (isActivexEnabled()) { alert("IE10 Classic"); } else { alert("IE10 Metro"); }
온라인 페이지 http://www.hugeflow.com/temp/DetectingIE.php에 위 소스코드를 수행가능하도록 올려놨으니,
IE10 클래식과 IE10 메트로에서 각각 접속하여 alert창의 결과를 비교해 보십시오.
이 꼼수의 핵심은 바로 ActiveX의 지원 유무를 체크하는 것인데요.
이것을 바로 사용하시는 분을 없을 테지만, 노파심에서 덧붙이면,
IE인지 아닌지, IE10인지 아닌지를 이미 검사해서 분기한 후에 추가적으로 확인하는 방식으로 사용하십시오!
이 꼼수의 부작용(Side effect)가 있을 것 같아서 불안불안한데 부작용을 발견하신 분은 댓글로 좀 알려주십시오. 굽신 (__);
내용추가 시작: 2012/10/04 21:04
부작용
한국 마이크로소프트의 김명신 부장님(부작용님이라고 쓸 뻔 했음! ^^;)께서 지적해 주신 부작용입니다.
결국 이 꼼수는 믿고 쓸 수가 없군요.
김명신: "첫째로 ARM 기반에서는 Classic/Metro 모두 ActiveX가 동작하지 않으므로 이런식의 구분은 불가능 합니다. 둘째로 Classic에서도 ActiveX 를 사용하지 못하도록 옵션을 변경할 수 있는데 이 경우에도 Classic/Metro를 구분하지 못합니다. 말씀하신 데로 이 방식은 "꼼수"이고 공식적으로 두가지 모드를 구분할 수 있는 방법은 의도적으로 제공하지 않고 있습니다."
내용추가 끝
'Metro > Windows 8' 카테고리의 다른 글
[스크랩] 제품소개 "PC, 스마트로 진화하다! - 삼성 ATIV 스마트PC" (0) | 2012.11.07 |
---|---|
여러나라의 윈도우 8 TV 광고. 재미있습니다. (0) | 2012.10.31 |
윈도우8 RT 타블렛, 마이크로소프트 서피스(Microsoft Surface) 사전주문 시작 (0) | 2012.10.17 |
10월 6일,7일 [Student App Camp] C# Coding Camp 제가 진행합니다. (0) | 2012.09.28 |
[윈도우8] Background Audio와 Player Framework by Microsoft (0) | 2012.09.25 |
[윈도우폰8] HTC Windows Phone 8X 와 8S (0) | 2012.09.22 |
블로그 유입키워드 순위 "휴가" 관련단어 누르고 다시 "IT" 관련단어가 치고 올라옴. (0) | 2012.09.19 |