<!-[if! IE]> 작동하지 않음


139

점점 문제가 있습니다

<!--[if !IE]>

일하다. 내 문서에 이것을 가지고 있기 때문에 궁금합니다.

<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]>    <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]>    <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->

내가 추가하면

<!--[if !IE]><!-->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<!--<![endif]-->

어떤 이유로 든 헤더에 작동하지 않습니다. 그러나 내가 추가하면

<!--[if !IE]><!-->
    <style>
        All my css in here
    </style>
    <!--<![endif]-->

실제 html 페이지 (헤더)에 작동합니다. 어떤 제안? 건배

내 질문으로 업데이트

좋아, 내가 제거했을 때 나는 <!-->IE에서 체크인했지만 지금은 FF로 돌아갔다. no-ie.css는 FF에도 적용되었다. 그래서 다시 추가 <!-->하고 /를 제거하고 (주 템플릿에 추가하여 cm을 다시 추가하지 않음) 모두 FF에서 다시 작동하지만 이제 스타일 시트가 IE에 적용됩니다! 그래서 나는 시도했다

<!--[if IE]>
<link type="text/css" rel="stylesheet" href="https://stackoverflow.com/stylesheets/no-ie.css">
<![endif]-->

<!--[if !IE]> -->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<!-- <![endif]-->

그리고 그것은 효과가 없었습니다. 기본적 으로이 페이지가 http://css-tricks.com/examples/ResponsiveTables/responsive.php 작동 하지만 CSS를 스타일 시트로 이동 하려고합니다 . 분명히 간단해야합니다. 내가 무엇을 놓치고 있습니까? 필요하지 않으면 JQuery를 사용하지 않을 것입니다. 건배


1
<!--><!--[if !IE]>
techfoobar

29
참고 : IE가 IE9까지만 작동하는 경우.
cameronjonesweb

어떤 사람들은 일부 페이지에 재미있는 IF IE 메시지를 남겼습니다.
neverMind9

@cameronjonesweb 당신은 참조를 연결할 수 있습니다 그렇지 않으면 이와 같은 진술이 유용하지 않습니까?
trainoasis

@trainoasis, 내 의견이 5 살인
cameronjonesweb

답변:


236
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->

참고 : 이러한 조건 주석은 더 이상 IE 10 이상에서 지원되지 않습니다 .


39
2013 년 6 월 현재이 페이지 의 유일한 답변입니다.
JohnB

2
이 선에 닫는 꺾쇠 괄호가 없습니까? 안된다 : <!-[if! IE]> <!-> <script src = "zepto.min.js"> </ script> <!-> <! [endif]->
n00shie

1
이것은 다른 모든 조건부 주석 솔루션과 함께 IE 10 / IE 11을 감지하지 못합니다
Lloyd Banks

9
IE 11에서는 작동하지 않으며 조건이! IE 인 경우에도 스크립트를로드합니다.
Giedrius

49
@Giedrius IE10부터는 조건부 주석이 더 이상 지원되지 않습니다 . msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
acdcjunior

70

IE 이외의 브라우저는 조건문을 주석 태그 안에 포함하므로 조건문을 주석으로 처리합니다.

<!--[if IE]>
Non-IE browsers ignore this
<![endif]-->

그러나 IE가 아닌 브라우저를 대상으로하는 경우 코드 앞뒤에 2 개의 주석을 사용해야합니다. IE는 그들 사이의 코드를 무시하지만 다른 브라우저는 코드를 일반 코드로 취급합니다. 따라서 비 IE 브라우저를 대상으로하는 구문은 다음과 같습니다.

<!--[if !IE]-->
IE ignores this
<!--[endif]-->

참고 : 이러한 조건 주석은 더 이상 IE 10 이상에서 지원되지 않습니다 .


1
훌륭합니다. 고마워 스타일 시트는 작동하지만 지금 문제는 헤더 위의 페이지 맨 위에 <!-[if! IE]-> <!-[endif]->에 표시된다는 것입니다. 헤더 영역에서 본문이 아님)
user1516788

21
-1 :이 답변이되어 잘못된 때문에이 <!--[if !IE]-->IE ignores this<!--[endif]-->되어 있지 IE에서 숨겨! (7, 8 또는 9)
JohnB 2016 년

3
어떤 대답도 나를 위해 효과가 없었습니다. 아마도 IE10의 최신 릴리스에서 변경된 것이 있습니다 (IE9 모드에서도 시도). -모든 시도가 모든 브라우저에서 IE가 아닌! IE 섹션에 도달했습니다.
Danny Varod 2016

2
IE10은 조건문을 지원하지 않습니다.
Scorpius

1
<!-[if IE]> 및 <! [endif]->의 공백에주의하십시오. 공백이 없어야합니다 (예 :!-와 [. 공백 사이에는 작동하지 않습니다)
Robert Skarżycki

37

누군가 여전히이 페이지에 도달하면 ie 타겟팅이 작동하지 않는 이유에 대한 업데이트입니다. IE 10 이상에서는 더 이상 조건부 주석을 지원하지 않습니다. MS 공식 웹 사이트에서 :

상호 운용성 및 HTML5 준수를 향상시키기 위해 Internet Explorer 10 표준 및 쿼크 모드에서 조건부 주석 지원이 제거되었습니다.

자세한 내용은 여기를 참조하십시오 : http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

필사적으로 대상을 지정 해야하는 경우이 jquery 코드를 사용하여 ie 클래스를 추가 한 다음 CSS의 .ie 클래스를 사용하여 브라우저를 대상으로 지정할 수 있습니다.

if ($.browser.msie) {
 $("html").addClass("ie");
}

업데이트 : jQuery 1.9 이후 $ .browser를 사용할 수 없습니다. 1.9 이상의 jQuery로 업그레이드하거나 이미 사용중인 경우 jQuery 뒤에 jQuery 마이그레이션 스크립트를 포함시켜 누락 된 부분을 추가 할 수 있습니다. jQuery Migrate Plugin

또는이 스레드에서 가능한 해결 방법을 확인하십시오 : jQuery 1.9.1로 업데이트 한 후 browser.msie 오류


정말 좋은 해결책입니다! 특정 클래스를 적용하기 위해 돔 트리에서 사용할 필요조차 없습니다.
mmm

2
이것은 jQuery 1.3 이후로 더 이상 사용되지 않으며 1.9에서 제거되었습니다.
Jøran


12

하위 수준에 공개 된 조건부 "설명"에 대한 Microsoft 권장 구문은 다음과 같습니다.

<![if !IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<![endif]>

이들은 주석이 아니지만 제대로 작동합니다.


이 답변을 지원하는이 링크를 찾았으며 스레드를 도울 수있는 다른 정보가 많이 있습니다. 이것은 중요한 주제라고 생각합니다 ... 숨겨 지거나 드러난 구문이 사용되는 경우에만 차이점이 있습니다. 다른 브라우저에도 영향을 미칩니다 ... msdn.microsoft.com/en-us/library/ms537512.ASPX
user1360809


8

우선 올바른 구문은 다음과 같습니다.

<!--[if IE 6]>
<link type="text/css" rel="stylesheet" href="https://stackoverflow.com/stylesheets/ie6.css" />
<![endif]-->

이 게시물을보십시오 : http://www.quirksmode.org/css/condcom.htmlhttp://css-tricks.com/how-to-create-an-ie-only-stylesheet/

당신이 할 수있는 또 다른 일 :

jQuery로 브라우저를 확인하십시오.

if($.browser.msie){ // do something... }

이 경우 일부 요소에 대한 CSS 규칙을 변경하거나 새로운 CSS 링크 참조를 추가 할 수 있습니다.

이것을 읽으십시오 : http://rickardnilsson.net/post/2008/08/02/Applying-stylesheets-dynamically-with-jQuery.aspx


보다 정확한 답변은 위의 user1324409의 답변을 참조하십시오.
Chris Peters

2
jQuery 업데이트로 인해 $ .browser.msie를 사용하는 사람은 jquery-migrate.js를 포함해야합니다. 그러면 작동합니다.
AspiringCanadian


답변에 제공된 링크가 작동하지 않습니다.
Pankaj

8

<!-- [if !IE] --> IE8은 미디어 쿼리로 끔찍 하기 때문에 내 전체 CSS 블록에 다음과 같은 공간을 두어야 합니다.

<!-- IE 8 or below -->   
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css"  href="https://stackoverflow.com/Resources/css/master1300.css" />        
<![endif]-->
<!-- IE 9 or above -->
<!--[if gte IE 9]>
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
    href="https://stackoverflow.com/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
    href="https://stackoverflow.com/Resources/css/master480.css" />        
<![endif]-->
<!-- Not IE -->
<!-- [if !IE] -->
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
    href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
    href="/Resources/css/master480.css" />
<!-- [endif] -->

의견을 보내 주셔서 감사합니다. <!-[if! IE]-> <link rel = "stylesheet"type = "text / css"href = "/ stylesheets / no-ie.csss"/> <! -[endif]-> 다른 브라우저에서도 적용됩니다.
user1516788

3
다른 브라우저가 해당 섹션을 적용하도록하는 것이 요점이 아닌가?
John Hayford

1
-1 : !IE여기에 언급 된 기술은 실제로 IE 7에서 10까지 주석 처리 된 블록을 실행합니다.
Ian Campbell


8

IE 사용자를 대상으로하는 경우 :

<!--[if IE]>
Place Content here for Users of Internet Explorer.
<![endif]-->

다른 모든 대상을 타겟팅하는 경우 :

<![if !IE]>
Place Content here for Users of all other Browsers.
<![endif]>

조건부 주석은 Internet Explorer에서만 감지 할 수 있으며 다른 모든 브라우저는 일반 주석으로 스레드합니다.

IE 6,7 등을 대상으로합니다. If 문에서 "Equaler Than Equal"또는 "Lesser Than (Equal)"를 사용해야합니다. 이렇게

크거나 같음 :

<!--[if gte IE 7]>
Place Content here for Users of Internet Explorer 7 or above.
<![endif]-->

보다 작음 :

<!--[if lt IE 6]>
Place Content here for Users of Internet Explorer 5 or lower.
<![endif]-->

출처 : mediacollege.com



7

이것은 IE9까지입니다

<!--[if IE ]>
<style> .someclass{
    text-align: center;
    background: #00ADEF;
    color: #fff;
    visibility:hidden;  // in case of hiding
       }
#someotherclass{
    display: block !important;
    visibility:visible; // in case of visible

}
</style>

이것은 IE9 이후입니다

  @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {enter your CSS here}

5

IE 브라우저의 경우 :

<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<![endif]-->

모든 비 IE 브라우저의 경우 :

<![if !IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<![endif]>

8보다 큰 모든 IE 또는 비 IE 브라우저 :

<!--[if (gt IE 8)|!(IE)]><!--><script src="/_JS/library/jquery-2.1.1.min.js"></script><!--<![endif]-->

3

조건부 주석은 <!--[if IE]>IE를 제외한 모든 브라우저에서 읽을 수없는 주석으로 시작합니다 .

2011 년부터 Microsoft가 발표 한 IE 10 양식부터는 조건부 설명이 지원되지 않습니다. https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx

조건부 설명을 사용하는 유일한 옵션은 조건부 설명을 지원하는 IE 9로 사이트를 실행하도록 IE에 요청하는 것입니다.

당신은 자신의 CSS 및 / 또는 js 파일을 쓸 수 있습니다. 즉 다른 브라우저는 그것을로드하거나 실행하지 않습니다.

이 코드 스 니펫은 IE 10 또는 11이 ie-only.css 및 ie-only.js를 실행하여 IE 호환성 문제를 해결하는 방법을 보여줍니다.

    <html>
      <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
      <!--[if IE]>
            <meta http-equiv="Content-Type" content="text/html; charset=Unicode">
            <link rel="stylesheet" type="text/css" href='/css/ie-only.css' />
            <script src="/js/ie-only.js"></script>
      <![endif]-->
    </html>


1

이것은 버전 6보다 큰 모든 브라우저에서 작동합니다 (IE7, 8, 9, 10 등, Chrome 3은 현재 상태, FF ver 3은 현재 상태).

//test if running in IE or not
        function isIE () {
            var myNav = navigator.userAgent.toLowerCase();
            return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
        }

0

이 자바 스크립트를 사용하여 IE 브라우저를 감지하고 있습니다.

if (
    navigator.appVersion.toUpperCase().indexOf("MSIE") != -1 ||
    navigator.appVersion.toUpperCase().indexOf("TRIDENT") != -1 ||
    navigator.appVersion.toUpperCase().indexOf("EDGE") != -1
)
{
    $("#ie-warning").css("display", "block");
}

0

감사합니다 Fernando68, 나는 이것을 사용했습니다 :

function isIE () {
     var myNav = navigator.userAgent.toLowerCase();
     return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
}

if(isIE()){
     $.getScript('js/script.min.js', function() {
            alert('Load was performed.');
     });
}

-1

이 코드는 브라우저에서 작동합니다.

<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->

이 코드에 대한 참고 사항 : HTML5 요소 및 미디어 쿼리에 대한 HTML5 Shiv 및 Respond.js IE8 지원

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.