IE6/IE7 브라우저에 메시지를 표시하여 IE8로 업그레이드하고 IE8이 IE7 경고를 표시하지 않도록하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/822508

문제

IE8 (IE6, IE7이 아님) 또는 다른 브라우저가 로그인 할 때 내 사이트에 액세스 할 수 있도록 허용하고 싶습니다.

나는 따라 갔다 : http://code.google.com/p/ie6-upgrade-warning/그러나 IE7 사용자가 로그인 할 때 IE7 사용자가 기본 사이트를 사용하지 않기를 원했습니다 (공개 페이지를 볼 수 있습니다.) 기본 웹 응용 프로그램에는 IE8 렌더링 모드에서 100% 만 작동하는 JavaScript 효과가 많기 때문입니다. (또는 IE를 제외한 다른 브라우저)

IE6 업그레이드 경고를 IE7로 수정하는 문제는 IE8이 IE7 렌더링 모드에 내 웹 페이지를 표시 한 것처럼 보였고 IE7에 대한 "LIES"와 IE7 스타일 시트 코드를 트리거한다는 것입니다.

그렇다면 IE8을 항상 IE8 모드로 렌더링하도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이 태그 사용 :

<meta http-equiv="X-UA-Compatible" content="IE=8" />

다른 팁

Adamsane의 예에 대한 수정 :

<!--[if lt IE 8]> Special instructions for IE 7 or less here <![endif]-->

다음은 몇 가지 솔루션을 제안하는 좋은 링크입니다

http://garmahis.com/tools/ie6-update-warning/

개인적으로 나는 네 번째 솔루션을 좋아합니다 (http://www.browser-update.org/)

케이크 한 조각

개인적으로 보안상의 이유로 사용자가 IE를 업그레이드하는 것이 좋습니다. IE8 아래의 브라우저를 대상으로 조건부 의견을 사용합니다.

      <!--[if lt IE 8]>You are using an outdated version of Internet Explorer.  For security reasons you should upgrade your browser. Please go to Windows Updates and install the latest version.<![endif]-->

이 메시지는 눈에 띄지 않지만 우아해야합니다. 또한 브라우저를 업그레이드 할 수없는 사람들을 위해 웹 사이트를 사용할 수 있도록해야합니다.

IE 8+ 모드를 강제하려고 시도하는 대신 조건부 의견과 간단한 JavaScript 점검을 사용합니다. 그만큼 document.documentMode 속성은 버전 8에서 IE에 추가되었으므로 (값에 관계 없이이 코드로 7이어야하지만) 전혀 존재하지 않으면 호환 모드에 있으며 경고를 표시해서는 안된다는 것을 의미합니다.

<!--[if lte IE 7]>
    <script>
        if (!document.documentMode) { //if documentMode exists, this is a later IE in compatibility mode
            showBadBrowserMessage();
        }
    </script>
<![endif]-->

다음은 모든 오래된 브라우저에 맞는이 멋진 스크립트입니다.

<script type="text/javascript"> 
    var $buoop = {vs:{i:7,f:5,o:12,s:5,n:9}}; 
    $buoop.ol = window.onload; 
    window.onload=function(){ 
     try {if ($buoop.ol) $buoop.ol();}catch (e) {} 
     var e = document.createElement("script"); 
     e.setAttribute("type", "text/javascript"); 
     e.setAttribute("src", "//browser-update.org/update.js"); 
     document.body.appendChild(e); 
    } 
</script> 

참고 : 방문자가 조언을 무시하면 한동안 다시 나타나지 않습니다.

더 많은 것을 찾을 수 있습니다. 여기

(x) HTML을 코딩하는 방법에 따라 다르지만, IE8은 엄격한 문서가있는 경우 표준 모드 (IE7 모드가 아님)를 사용해야합니다.

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

HTML 파일의 상단에 있습니다.

XHTML 1.0 사양 - 엄격하게 준수하는 문서

다음은 다른 DocTypes 등이 IE8의 렌더링 모드에 어떤 영향을 미치는지에 대한 좋은 게시물입니다. 인터넷 익스플로러의 호환성 모드 이해 8

아마도 가장 좋은 방법은 사용자의 브라우저 사용자 에이전트 문자열을 감지하고 이전 버전의 IE를 사용하는 경우 업그레이드 (또는 Firefox 또는 Chrome과 같은 다른 브라우저를 다운로드)를 요청하는 페이지로 리디렉션하는 것입니다. IE 7 및 8의 사용자 에이전트의 예를 볼 수 있습니다. IE 개발자 블로그 항목. 구형 버전의 IE는 비슷한 패턴을 따릅니다.

그러나하지 말아야 할 한 가지는 특정 패턴을 따르지 않는 사용자 에이전트 문자열이 유효하지 않다고 가정합니다. MSIE ([0-9])를 확인하고 범위에 있는지 확인하십시오. 완전히 누락 된 경우 브라우저가 지원되었다고 가정하십시오. MSIE 7 인 경우 호환성 모드를 나타내는 트라이던트 마커를 추가로 확인하십시오 (그리고 사용자에게 끄도록 요청합니다). 이를 통해 다른 미래의 신생 브라우저는 페이지를 문을 돌리지 않고 페이지를 렌더링 할 수있는 싸움 기회를 가질 수 있습니다. :)

언급 된 바와 같이, 나는 이것을 달성하는 가장 좋은 방법은 조건부 의견을 사용하여 8보다 초기의 IE의 모든 버전에 특정한 스타일을 포함하는 것입니다.

<!--[if lt IE 8]> Include CSS here <![endif]-->

포함 된 CSS는 경고를 표시하거나 사용자가 '잠금'하는 페이지의 오버레이를 가능하게하는 경고를 설정할 수 있습니다. 페이지에 중요한 요소를 숨기는 몇 가지 규칙을 포함시키는 것이 좋습니다.

다른 옵션은 사용자를 다른 페이지로 리디렉션하는 것입니다. 저는 리디렉션의 열렬한 팬이 아니지만주의해서 사용하면 적절한 솔루션이 될 수 있습니다.

당신은 고려 했습니까? 사이트에서 많은 양의 사용자를 잠그고 있습니까? 어쩌면 시간을내어 JavaScript 또는 다른 방법을 우아하게 저하시키는 방법을 알아야합니다. JavaScript로 '점진적으로 향상'.

반면에, 귀하는 귀하의 사이트를 사용하여 조직에서 사용하는 시스템을 제어 할 수 있으며,이 경우 비표준 시스템을 사용하기 위해 사람들을 잠그는 것이 좋습니다.

CSS 조건부 주석을 사용할 수 있습니다

<!--[if IE 8]>
Special instructions for IE 6 here
<![endif]-->

JavaScript를 사용하여 요청을 보낸 브라우저를 요청할 수 있습니다.

<script type="text/javascript">
function detectBrowser()
{
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
if (browser=="Microsoft Internet Explorer")
  && (version>=8))
  {
  alert("Your browser is good enough!");
  }
  else
  {
  alert("It's time to upgrade your browser!");
  }
  }
 </script>

이 파티가 끝났나요? >

그러나 여기에 정보가 약간 업데이트 될 수 있다고 생각합니다.

2013 년 10 월 29 일인 "Today"표준에 따라이 메타 태그를 사용하여 최신 IE 브라우저 및 문서 모드를 트리거하고 이전 IES에서 Google의 크롬 프레임 설치를 트리거 할 수 있습니다.

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

이를 통해 특정 IE6/7 스타일을 서버 할 수 있습니다. 나는 '스타일 시트'가 아니라 '스타일'이라고 말하고 있음을 명심하십시오. 이것은 HTTP 요청을 최소화하기위한 것입니다. 그러나 그것은 완전히 다른 대화입니다.

어쨌든 위의 스 니펫으로 스크립트 나 조건부 의견이 필요하지 않습니다.

메모: Google Chrome 프레임은 2014 년 1 월에 은퇴합니다. 더 많은 정보는 여기에 있습니다.

웹 사이트에서 6과 7 사용자를 "금지"한다는 생각은 말도 안됩니다. 많은 사람들이 작업 제한이나 방법을 모르기 때문에 브라우저를 업그레이드하거나 다른 브라우저를 설치할 수 없습니다. 이 사람들이 귀하의 사이트를 사용하지 않으면 장기적으로 사용자가 비용이들 것입니다.

JavaScript를 수정하거나 문제를 해결하거나 우아하게 저하되어 사이트가 꺼져 있어도 사이트가 잘 작동하도록합니다.

편집 : 아래 주석에 더 많은 정보를 게시 했는데이 게시물에 실제로 있어야합니다.

IE를 감지하고 주변을 다루는 것이 종종 가능합니다. 지옥, 조건부 주석을 사용하여 다른 버전의 JavaScript를로드 할 수도 있습니다. JS 프레임 워크를 사용하면 브라우저 간의 차이점을 걱정할 필요가없는 레벨로 추상화합니다. 아니면 그냥 잡아라 ie7.js 그리고 그것을 사이트에 고집하십시오 - 나는 그것이 당신이 믿지 않는 것처럼 일하는 일을한다고 들었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top