2

사용자가 Metro vs Desktop IE10을 사용하고있을 때 검색하고 싶습니다.IE10 데스크탑과 메트로 차별화

저는 웹을 많이 검색했으며 사용자가 IE10 Metro 스타일 또는 데스크톱 스타일에서 실행 중인지 (코드를 사용하여) 알아내는 방법이 100 % 없다는 결론을 얻었습니다. 그런 다음 activeX를 탐지하는 avascript가있는 사이트를 발견했습니다.

Metro와 Desktop을 검색하기에 충분합니까? 내가 "MyActiveX가 설치되지 않은"을 참조

<html> 
<body> 
<script type="text/javascript"> 
var myActiveX = null; 
var isActiveXCapable = false; 

function InitMyActiveX() { 

    try { 
    new ActiveXObject(""); 
    } 
    catch (e) { 
    // FF has ReferenceError here 
    if (e.name == 'TypeError' || e.name == 'Error') { 
     isActiveXCapable = true; 
    } 
    } 
    try { 
    myActiveX = new ActiveXObject("My.ActiveX"); 
    } 
    catch (e) { 
    myActiveX = null; 
    } 

    if (myActiveX != null) { 
    document.getElementById("myInfo").innerHTML = myActiveX.GetSomeInfo(); 
    } else { 

    document.getElementById("CallMyActiveX").setAttribute("disabled", "disabled"); 

    if (!isActiveXCapable) { 
     document.getElementById("myInfo").innerHTML = "Browser does not support ActiveX"; 
    } else { 
     document.getElementById("myInfo").innerHTML = "MyActiveX is not installed"; 
    } 
    } 
} 

function DoSomething() { 
InitMyActiveX(); 
    if (myActiveX != null) { 
    var s = myActiveX.DoSomething(); 
    document.getElementById("myResult").innerHTML = s; 
    } 

} 
</script> 

<div id="myInfo"></div> 
<input type="button" id="CallMyActiveX" value="Call me" onclick="DoSomething()" /> 
<div id="myResult"></div> 
</body> 
</html> 

IE10 바탕 화면에 간단하게 실행 :

코드는 다음과 같다. 파이어 폭스에서 "MyActiveX가 설치되지 않았습니다". IE10 Metro 스타일에서 동일한 결과를 얻을 수 있습니까? 메트로에서 실행 중인지 확인하는 데 도움이됩니까?

이 경우가 정확하지 않고 그 둘 사이를 구별 할 방법이 없다면 IE10 데스크탑에서 Metro 스타일을 어떻게 모방합니까? 내가 totalx를 activeX를 무능하게하는 방법은 나에게 지하철 Ie10와 같은 결과를 줄 것이다?

감사합니다, 내 IE10 내가 마지막으로 다음과 같은 함수 내에서 모두 함께 요약 데스크톱 또는 메트로 버전으로 실행 여부를 결정하기 위해 솔루션을 웹 크롤링 후 탈

+3

왜 당신이 두 개의 구별하고 싶어 :

이 SO 후 더 많은 정보를 가지고? Microsoft는 플랫폼보다는 기능을 찾아야한다고 권고합니다. 예를 들어, activex가 비활성화 된 경우 스크립트에서 무언가를 수행하면 activeX가 비활성화 된 경우 메트로 또는 데스크톱에서 실행 중인지 여부에 관계없이 동일한 작업을 수행해야합니다. – Aarkan

+0

여러 가지 이유로 인해 둘 사이를 구별해야합니다 ... ActiveX는 두 가지를 구별하는 데 사용 된 몇 가지 방법 일뿐입니다. 질문은이게 효과가 있니? 어떤 버전에서 작동하는지 확인하는 적절한 방법입니까? – Tal

+0

그것이 바로 그 요점입니다. 차별화가 필요한 이유는 무엇입니까? 여기에 몇 가지 이유를 줄 수 있습니까? – Aarkan

답변

3

:

function checkForIE10MetroStyle() { 
var result = false; 
if (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints >= 2) { 
    var platF = navigator.platform; 
    var cpu = navigator.cpuClass; 

    if (platF.toLowerCase() == 'win64' || cpu.toLowerCase() == 'arm') { 
     // both potential platforms found - now search deeper 
     try { 
      // IE10 Metro does not support ActiveX 
      new ActiveXObject("htmlfile"); 
     } catch (e) { 
      // finally check for fullscreen-mode 
      result = (window.innerWidth == screen.width && window.innerHeight == screen.height); 
     } 
    } 
} 

return result; 

}

불행히도 100 % 확신 할 수있는 정확한 가능성은 없습니다 ... 그러나 먼저 최소한 두 개의 "터치 포인트"가있는 경우 msPointerEnabled를 확인합니다 (하지만이 것은 필요하지 않습니다). 내 스크립트는 터치와 마우스 버전간에 차이가 있으므로이 체크가 필요합니다.이 코드는 그대로 두어도됩니다.

IE10도 msPointerEnabled를 지원하므로 많은 사람들이 제안한대로 플랫폼 문자열을 따릅니다. MS Surface가 ARM을 실행하면서 CPU와 결합되었습니다. 그리고 마지막으로 두 가지 포인트 : 액티브 X와 해상도 ...

하지만 불행히도 이러한 모든 포인트조차도 터치 가능 데스크톱/노트북 PC로 시뮬레이션 할 수 있습니다 ... 원하는 경우 데스크톱을 얻는 것이 어렵습니다. IE10 지금까지 불가능하지만 불가능합니다.

MS가 터치인지 아닌지와 데스크톱 또는 메트로인지 여부를 알려주는 간단한 속성을 구현한다면 나는 그것을 좋아했을 것이다. 그러나 그렇지 않았다.

희망 코드가 도움이 되셨습니까?

+0

친애하는 올라프, 귀하의 게시물은 매우 흥미 롭습니다. 방금 ​​Nokia Lumia 휴대 전화에서 방법을 시도했습니다. 불행히도 catch 블록 내의 IF 절이 작동하지 않습니다. 다음 값을 얻습니다. window.innerWidth = 1024! = screen.width = 371 and window.innerHeight = 1553! = screen.height = 619 – Windwalker

+0

Windows Phone이 설치된 휴대 전화에 대한 액세스 권한이 없으므로 Windwalker에게 나는 거기에서 무슨 일이 일어나고 있는지 거의 말할 수 없다. 그러나 우리 회사의 모바일 최적화에 대한 마지막 작업으로 인해 웹 페이지가 창 크기를 조정하는 뷰포트 설정을 사용할 수 있다고 생각할 수 있습니까? 노키아에 대한 참조를 위해 사용자 에이전트 문자열을 확인하는 것이 도움이 될 수 있을까요? 아니면 단순히 그것을 버리고 모든 것이 정확할 것이라고 희망하십시오. 나는 또한 때로는 완벽에 가까워지는 것이 결코 그것에 도달하지 않는 것보다 낫다고 결정했다 .-) – OlafW

+0

나는 그것이 좋은 지적이라고 생각한다. 많은 감사! – Windwalker

0

IE10 메트로 및 IE10 데스크톱 버전의 기능은 거의 동일합니다 (IE10 데스크톱은 플러그인을 지원하고 IE10 메트로는 지원하지 않습니다). 사용자가 데스크톱 버전을 사용하고 Metro 버전을 사용하려면 데스크탑 버전을 사용하도록하는 것이 가장 좋습니다. 사용자가 IE10 메트로 버전에 있고 사용자가 IE10 데스크톱 버전을 사용하려는 상황을 고려하면 탐색 모음에서 2 번의 클릭으로 데스크톱 버전을 열 수 있습니다.이 방법이 가장 좋을 것입니다. opening IE10 desktop version from IE10 metro version