<! - [eğer! IE]> çalışmıyor


139

Almakta zorlanıyorum

<!--[if !IE]>

çalışmak. Acaba bu belgemde var mı diye merak ediyorum

<!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]-->

Eklediğimde

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

herhangi bir nedenden dolayı başlığım için çalışmıyor. Ancak eklersem

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

gerçek html sayfasına (başlıkta) çalışır. Baska öneri? Şerefe

Sorumun güncellenmesi

Tamam, kaldırdığımda <!-->ben sadece çalışan IE kontrol ama şimdi geri FF no-ie.css çok FF uygulanmıştı. Bu yüzden geri ekledi <!-->ve / ((ve cms geri eklemek olmaz böylece ana şablona ekledi) ekledi ve tüm geri FF çalışıyor ama şimdi stil sayfası IE uygulanmaktadır! Ben de denedim

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

ve

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

Ve bu işe yaramadı. Temelde bu sayfayı http://css-tricks.com/examples/ResponsiveTables/responsive.php çalışmak ama css bir stil sayfasına taşımak için çalışıyorum . Elbette basit olmalı. Neyi kaçırıyorum? Gerekmiyorsa JQuery kullanmak istemem. Şerefe


1
<!-->Hemen sonra gerek yok<!--[if !IE]>
techfoobar

29
Not: IE yalnızca IE9'a kadar çalışıyorsa.
cameronjonesweb

Bazı insanlar bazı sayfalarda komik IF IE mesajları bıraktı.
neverMind9

@cameronjonesweb bir referans bağlayabilirsiniz lütfen aksi takdirde bu gibi ifadeler kadar yararlı değil mi?
trainoasis

@trainoasis, Yapabilirim, ancak yorumum 5 yaşında
cameronjonesweb

Yanıtlar:


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

Not: Bu koşullu yorumlar artık IE 10'dan itibaren desteklenmemektedir .


39
Haziran 2013 itibariyle, bu sayfadaki tek doğru cevap budur.
JohnB

2
Bu çizgide bir kapanış açılı ayraç eksik mi? Olmaması gereken: <! - [eğer! IE]> <! -> <script src = "zepto.min.js"> </script> <! -> <! [Endif] ->
n00shie

1
Bu, diğer tüm koşullu yorum çözümleri ile birlikte, IE 10 / IE 11 tespit etmeyecektir
Lloyd Banks

9
IE 11'de çalışmaz, koşul olsa bile komut dosyasını yükler! IE
Giedrius

49
@Giedrius IE10'dan itibaren, koşullu yorumlar artık desteklenmemektedir : msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
acdcjunior

70

IE dışındaki tarayıcılar, yorum etiketlerinin içine eklendikleri için koşullu ifadeleri yorum olarak ele alır.

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

Ancak, IE olmayan bir tarayıcıyı hedeflerken koddan önce ve sonra 2 yorum kullanmanız gerekir. IE, diğer tarayıcılar normal kod gibi davranırken, aralarındaki kodu yok sayar. IE olmayan tarayıcıları hedefleme sözdizimi bu nedenle:

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

Not: Bu koşullu yorumlar artık IE 10'dan itibaren desteklenmemektedir .


1
Bu harika. Bunun için teşekkürler. Stil sayfası çalışır ancak şimdi sahip olduğum sorun başlığın üstündeki sayfanın üst kısmında bu yani <! - [eğer! IE] -> <! - [endif] -> (etiket gitti başlık alanında gövde değil)
user1516788

21
-1: Bu cevap olduğu yanlış çünkü <!--[if !IE]-->IE ignores this<!--[endif]-->edilir değil IE gizli! (7, 8 veya 9)
JohnB

3
Cevapların hiçbiri benim için işe yaramadı, belki de son IE10 sürümünde bir şey değişti (IE9 modunda da denendi). - Tüm denemeler tüm tarayıcılarda (IE değil, IE)! IE bölümüne ulaştı.
Danny Varod

2
IE10 koşullu ifadeleri desteklemez.
Scorpius

1
<! - [IE]> ve <! [Endif] -> içindeki boşlukların farkında olun - herhangi bir boşluk olmamalıdır (örneğin! - ve [arasında. Beyaz boşluklarla çalışmaz.
Robert Skarżycki

37

Birisi hala bu sayfaya ulaştığında, yani hedeflemenin neden çalışmadığını merak eden bir güncelleme. IE 10 ve sonrası artık koşullu yorumları desteklememektedir. MS resmi web sitesinden:

Koşullu yorumlar için destek, birlikte çalışabilirlik ve HTML5 ile uyumluluk için Internet Explorer 10 standartlarında ve gariplik modlarında kaldırılmıştır.

Daha fazla ayrıntı için lütfen buraya bakın: http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

Umutsuzca yani hedeflemeniz gerekiyorsa, bu jquery kodunu bir ie sınıfı eklemek için kullanabilirsiniz ve daha sonra css'nizdeki .ie sınıfını yani tarayıcıları hedeflemek için kullanabilirsiniz.

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

Güncelleme: jQuery 1.9'dan sonra $ .browser kullanılamıyor. 1.9'un üstündeki jQuery'ye yükseltirseniz veya zaten kullanıyorsanız, jQuery'den sonra jQuery geçiş komut dosyasını dahil edebilirsiniz, böylece eksik parçalar eklenir: jQuery Migrate Plugin

Alternatif olarak, lütfen olası çözüm yolları için bu iş parçacığını kontrol edin: jQuery 1.9.1 güncellemesinden sonra browser.msie hatası


bu gerçekten hoş bir çözüm! Bazı sınıfları uygulamak için dom ağacında kullanmama bile gerek yok.
mmm

2
Lütfen dikkat, bu jQuery 1.3'ten beri kullanımdan kaldırılmıştır ve 1.9'da kaldırılmıştır
Jøran


12

Microsoft'un önerdiği alt düzey-açıklamalı koşullu “yorumlar” sözdizimi şöyledir:

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

Bunlar yorum değildir, ancak düzgün çalışırlar.


Bu yanıtı destekleyen bu bağlantı bulundu, aynı zamanda iş parçacığına yardımcı olabilecek diğer birçok bilgi var, bu önemli bir konu olduğunu düşünüyorum ... sadece gördüğüm fark gizli veya açığa çıkmış bir sözdizimi kullanılıyorsa ve nasıl olduğundan emin değilim diğer tarayıcıları da etkileyecek ... msdn.microsoft.com/tr-tr/library/ms537512.ASPX
user1360809


8

Her şeyden önce doğru sözdizimi:

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

Bu postayı deneyin: http://www.quirksmode.org/css/condcom.html ve http://css-tricks.com/how-to-create-an-ie-only-stylesheet/

Yapabileceğiniz başka bir şey:

Tarayıcıyı jQuery ile kontrol edin:

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

bu durumda bazı öğeler için css kurallarını değiştirebilir veya yeni css bağlantı referansı ekleyebilirsiniz:

bunu okuyun: http://rickardnilsson.net/post/2008/08/02/Uygulama-stylesheets-dynamically-with-jQuery.aspx


Daha doğru bir cevap için yukarıdaki user1324409'un cevabına bakın.
Chris Peters

2
JQuery güncellemeleri nedeniyle, $ .browser.msie kullanan herkesin jquery-migrate.js dosyasını içermesi gerekir ve sonra bu işe yarayacaktır.
AspiringCanadian


Cevapta verilen bağlantı öldü.
Pankaj

8

<!-- [if !IE] --> IE8 medya sorgularıyla korkunç olduğundan My css bloğumun tamamı için bir alan koymanız gerekiyor

<!-- 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] -->

Yorumunuz için teşekkürler ama <! - [if! IE] -> <link rel = "stylesheet" yazım = "text / css" href = "/ stylesheets / no-ie.csss" /> <! - [endif] -> sonra diğer tarayıcılar da bunu uygular.
user1516788

3
Asıl mesele, diğer tarayıcıların bu bölümü uygulaması için değil mi?
John Hayford

1
-1: !IEBurada bahsedilen teknik aslında IE 7 ila 10 için yorumlanan bloğu yürütecektir
Ian Campbell


8

IE Kullanıcılarını hedeflemek için:

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

Diğerlerini hedeflemek için:

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

Koşullu Yorumlar yalnızca Internet Explorer tarafından algılanabilir, diğer tüm Tarayıcılar bunu normal Yorumlar olarak işleyebilir.

IE 6,7 vb. Hedeflemek için. If deyiminde "Eşitten Büyük" veya "Küçükten (Eşit)" ifadelerini kullanmalısınız. Bunun gibi.

Büyük veya Eşit:

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

Den daha az:

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

Kaynak: mediacollege.com



7

Bu IE9'a kadar

<!--[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>

Bu IE9'dan sonra

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

5

IE tarayıcı için:

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

IE olmayan tüm tarayıcılar için:

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

8'den büyük VEYA tüm IE olmayan tarayıcılar için:

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

3

Koşullu yorum, <!--[if IE]>IE dışında herhangi bir tarayıcı tarafından okunamayan bir yorumdur .

2011'den itibaren Koşullu yorum, Microsoft tarafından o zaman duyurulduğu üzere IE 10'dan başlayarak desteklenmez https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx

Koşullu yorumları kullanmanın tek seçeneği, IE'den sitenizi Koşullu yorumları destekleyen IE 9 olarak çalıştırmasını istemektir.

kendi css ve / veya js dosyalarınızı yazabilirsiniz, yani yalnızca tarayıcılar yüklemez veya yürütmez.

Bu kod snippet'i IE 10 veya 11'in IE uyumluluk sorunlarını çözmek için özel kodlar içeren ie-only.css ve ie-only.js'nin nasıl çalıştırılacağını gösterir.

    <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

Bu, sürüm 6'dan daha büyük tüm tarayıcılarda (IE7, 8, 9, 10 vb., Chrome 3 şu anda olana ve FF ver 3 şu anda olana kadar) benim için çalışır:

//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 tarayıcı algılamak için bu javascript kullanıyorum

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

Teşekkürler Fernando68, bunu kullandım:

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

Bu kod tarayıcımda çalışıyor olsun:

<!--[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]-->

Bu kod için not: HTML5 öğeleri ve medya sorguları için HTML5 Shiv ve Respond.js IE8 desteği

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.