2011-03-27 7 views
0

저는 웹 응용 프로그램을 개발해 왔으며 IE로 테스트 할 때 중요한 디스플레이 요소에 중대한 문제가 있음을 발견했습니다. 이러한 이유로 IE 사용자로부터 웹 앱을 차단하고 다른 페이지로 보내 Firefox 또는 Chrome을 다운로드해야합니다.사용자가 IE에 있는지 여부를 어떻게 확인할 수 있습니까? IE에서 내 웹 응용 프로그램이 지원되지 않는다는 내용의 페이지로 보내려면 어떻게합니까?

나는 이것을하기위한 방법을 찾고 있었지만, IE만을위한 쉬운 안내서는 찾을 수 없다. 나는 일부 발췌 문장을 찾아서 시도했지만 브라우저/OS/등을 결정하고 인쇄하는 데 사용되기 때문에 작동하지 않을 것입니다. 정보. 도와 주셔서 정말 고맙습니다.

+1

오히려 완전히 사이트를 방문하는 것을 방지보다, 그냥 제대로 표시되지 않습니다 * A * 경고를 표시하는 사용자에게 친숙한 보이지 않을 것 그들의 브라우저에서, 그러나 여전히 * 그들이 정말로 원한다면 * 시도 할 수있는 동안? 물론 브라우저를 블랙리스트에 올리면 문제가 있다는 것을 실제로 알고있는 사람을 차단하십시오 (IE는 X 버전까지만 가능하지만 이후 버전은 IE가 아닙니다). – jalf

+1

당신이하고 싶습니까? 모든 유망한 사용자/고객이 다른 브라우저를 설치할 의향이 있는지 아십니까? IE는 여전히 설치되어있는 브라우저 기반의 상당한 비율을 차지하고 있습니다. 당신이 좋아하지 않을 수도 있지만, 따라 잡아야 할 수도 있습니다. – AAT

+1

응용 프로그램을 수정하십시오. 코드를 작성할 수 없기 때문에 다른 브라우저에서 브라우저를 변경하려고하지 마십시오. –

답변

1

한 가지 방법은 사용자 에이전트를 확인하는 것입니다, 그리고 그러나이없는 당신은 $_SERVER['HTTP_USER_AGENT']

if(preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT'])) 
    { 
        // Internet Explorer! 
     // header("Location: noie.php"); 
     // exit(); 
    } 

를 통해이 액세스 할 수 있습니다 항상 신뢰할 수 있으므로 다른 방법은 자바 스크립트를 통해 기능을 사용할 수 있는지 확인하는 것입니다.

고통스러운 것처럼 보일 경우, 기능 감지에 도움이되는 Modernizer을 확인하시기 바랍니다. 그것은 특정 브라우저 앱을 사용할 수 없다는 증거가 신뢰할하지 때문에

1

브라우저를 사용할 수있는 것은 좋은 생각이다.

먼저 특정 브라우저 (예 : Opera)는 브라우저를 '호환 가능'하게 만들기 때문에 다른 사용자 에이전트로 보낼 수 있습니다. 즉, 사용하려는 기술을 중심으로 작동합니다.

둘째로, 인터넷 익스플로러가 작동하지 않기 때문이 아닙니다. 인터넷 익스플로러 9는 웹 앱과 호환 될 가능성이 매우 높습니다.

대신 클라이언트 측에서 예상되는 기능이 실제로 있는지 확인해야합니다. document.getElementsByClassName에 의지하십니까? 이것을 시도하십시오 :

if (document.getElementByClassName == undefined) 
    document.location.replace('Unsupported browser URL here'); 

당신은 <canvas>을 의지합니까? 이것을 시도하십시오 :

if (document.getElementById('canvas-element').getContext == undefined) 
    document.location.replace('Unsupported browser URL here'); 

복잡한 CSS3 규칙을 사용하십니까? 그런 규칙으로 인해 레거시 브라우저에 대한 메시지가 숨겨집니다.

.error-message:not(.unexistant-class) { 
    /* this rule will be dropped by browsers that don't support the not() 
     selector */ 
    display:none; 
} 

요약하면 사용자 에이전트 대신 기능을 확인하십시오. 클라이언트가 원하는 모든 기능을 가지고 있다면 그것을 남겨 둘 이유가 없습니다.

2

정보를 완전히 차단하는 대신 유익한 메시지를 고려하십시오.즉 IE가 한때 다소 유용 곳 우연히이기도 :

<!--[if IE]><div class="info-bar">Your browser is not supported. Some 
parts of this application might be non-functional.</div><![endif]--> 
+1

OP가 정말로 모든 것을 차단해야한다면, '' 태그에서 이런 종류의 코드를 사용하여 메시지를'display : none;'* except *로 설정하는 CSS 파일을 제공하십시오. 주변을 둘러 보는 방법을 모르는 사람들은 모두 멈추며, 처음에는 지원되는 브라우저를 사용하기에 충분히 똑똑합니다 (또는 메시지를 볼 때 사용할 브라우저). –

+0

감사합니다. 나는 이것을 대안으로 생각할 것이라고 생각하지만 ... 이것은 jQuery에 매우 의존하고있다. (나는 당신 모두가 알고 있겠지만) IE의 고통이다. –

+0

@Jonathan : 조건부 주석 트릭은 jQuery 또는 Javascript에 종속되지 않습니다. 내장 된 IE 기능입니다. – mario