<! - [if! IE]> tidak berfungsi

139

Saya kesulitan mendapatkannya

<!--[if !IE]>

bekerja. Saya bertanya-tanya apakah itu karena saya memiliki ini di dokumen saya

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

Ketika saya menambahkan

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

ke tajuk saya karena alasan tertentu tidak berfungsi. Namun jika saya tambahkan

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

ke halaman html yang sebenarnya (di header) itu berfungsi. Ada saran? Bersulang

Perbarui pertanyaan saya

Ok, ketika saya menghapus <!-->saya hanya memeriksa di IE yang berfungsi tetapi sekarang kembali di FF no-ie.css telah diterapkan pada FF juga. Jadi saya menambahkan kembali ke dalam <!-->dan menghapus / (dan menambahkan itu ke dalam templat utama sehingga cms tidak akan menambahkannya kembali) dan semua bekerja kembali di FF tapi sekarang stylesheet sedang diterapkan ke IE! Jadi saya mencoba

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

dan

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

Dan itu tidak berhasil. Pada dasarnya saya mencoba membuat halaman ini berfungsi http://css-tricks.com/examples/ResponsiveTables/responsive.php tetapi pindahkan css ke dalam stylesheet. Tentunya itu harus sederhana. Apa yang saya lewatkan? Saya lebih suka tidak menggunakan JQuery jika saya tidak perlu. Bersulang

pengguna1516788
sumber
1
Anda tidak perlu <!-->segera setelah<!--[if !IE]>
techfoobar
29
Catatan: jika IE hanya berfungsi hingga IE9.
cameronjonesweb
Beberapa orang meninggalkan pesan IF IF IE lucu di beberapa halaman.
neverMind9
@cameronjonesweb dapatkah Anda menautkan referensi, jika tidak, pernyataan seperti ini tidak berguna?
trainoasis
@trainoasis, saya bisa, kecuali komentar saya berusia 5 tahun
cameronjonesweb

Jawaban:

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

Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya .

Berpikir 80-an
sumber
39
Pada Juni 2013, ini adalah satu - satunya jawaban yang benar di halaman ini.
JohnB
2
Apakah garis ini tidak memiliki braket sudut penutup? Bukankah seharusnya: <! - [if! IE]> <! -> <script src = "zepto.min.js"> </script> <! -> <! [Endif] ->
n00shie
1
Ini, bersama dengan semua solusi komentar bersyarat lainnya, tidak akan mendeteksi IE 10 / IE 11
Lloyd Banks
9
Itu tidak bekerja di IE 11, itu memuat skrip, bahkan jika kondisinya! IE
Giedrius
49
@Giedrius Dari IE10 hingga seterusnya, komentar bersyarat tidak lagi didukung : msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
acdcjunior
70

Browser selain IE memperlakukan pernyataan bersyarat sebagai komentar karena mereka terlampir di dalam tag komentar.

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

Namun, ketika Anda menargetkan browser yang BUKAN IE Anda harus menggunakan 2 komentar, satu sebelum dan satu setelah kode. IE akan mengabaikan kode di antara mereka, sedangkan browser lain akan memperlakukannya sebagai kode normal. Sintaks untuk menargetkan browser non-IE adalah:

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

Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya .

pengguna1324409
sumber
1
Itu hebat. Terima kasih untuk itu. Stylesheet berfungsi namun masalah yang saya miliki sekarang adalah bahwa di bagian atas halaman di atas header ini muncul di yaitu <! - [if! IE] -> <! - [endif] -> (tag pergi di area tajuk bukan badan)
user1516788
21
-1: Jawaban ini tidak benar karena <!--[if !IE]-->IE ignores this<!--[endif]-->ini tidak tersembunyi dari IE! (7, 8, atau 9)
JohnB
3
Tidak ada jawaban yang bekerja untuk saya, mungkin ada sesuatu yang berubah dalam rilis IE10 baru-baru ini (mencoba dalam mode IE9 juga) - Semua upaya akhirnya mencapai bagian! IE di semua browser (IE dan bukan IE).
Danny Varod
2
IE10 tidak mendukung pernyataan bersyarat.
Scorpius
1
Waspadai spasi putih di <! - [jika IE]> dan <! [Endif] -> - seharusnya tidak ada spasi putih (misalnya antara! - dan [. Tidak bekerja dengan spasi putih
Robert Skarżycki
37

Pembaruan jika seseorang masih membuka halaman ini, bertanya-tanya mengapa penargetan yaitu tidak berfungsi. IE 10 dan seterusnya tidak lagi mendukung komentar bersyarat. Dari situs web resmi MS:

Dukungan untuk komentar bersyarat telah dihapus di Internet Explorer 10 mode standar dan kebiasaan untuk meningkatkan interoperabilitas dan kepatuhan dengan HTML5.

Silakan lihat di sini untuk detail lebih lanjut: http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

Jika Anda benar-benar perlu menargetkan ie, Anda dapat menggunakan kode jquery ini untuk menambahkan kelas ie ke dan kemudian menggunakan kelas .ie di css Anda untuk menargetkan browser yaitu.

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

Pembaruan: $ .browser tidak tersedia setelah jQuery 1.9. Jika Anda memutakhirkan ke jQuery di atas 1.9 atau sudah menggunakannya, Anda dapat menyertakan skrip migrasi jQuery setelah jQuery sehingga menambahkan bagian yang hilang: jQuery Migrate Plugin

Atau, silakan periksa utas ini untuk kemungkinan penyelesaian: kesalahan browser.msie setelah pembaruan ke jQuery 1.9.1

Selay
sumber
itu solusi yang sangat bagus! Saya bahkan tidak perlu menggunakannya di pohon dom untuk menerapkan kelas-kelas tertentu.
mmm
2
Harap dicatat, ini sudah tidak berlaku lagi sejak jQuery 1.3 dan dihapus pada 1.9
Jøran
13

Saya menggunakan itu dan berfungsi:

<!--[if !IE]><!--> if it is not IE <!--<![endif]-->
Francis
sumber
Ini menghasilkan Firefox hanya memperlakukan seluruh konten sebagai komentar untuk saya. Solusi @Charmander bekerja untuk IE dan Firefox - <! [If! IE]> <! [Endif]>
Tom Chamberlain
3
Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya
Flimm
12

Sintaks yang direkomendasikan oleh Microsoft untuk "komentar" bersyarat tingkat bawah adalah ini:

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

Ini bukan komentar, tetapi mereka berfungsi dengan baik.


sumber
Menemukan tautan ini yang mendukung jawaban ini, juga memiliki banyak info lain yang dapat membantu utas, saya pikir ini adalah subjek penting ... satu-satunya perbedaan yang saya lihat adalah jika sintaks yang disembunyikan atau terungkap digunakan dan saya tidak yakin bagaimana ini akan mempengaruhi browser lain ... msdn.microsoft.com/en-us/library/ms537512.ASPX
user1360809
2
Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya
Flimm
8

Pertama-tama sintaks yang benar adalah:

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

Coba posting ini: http://www.quirksmode.org/css/condcom.html dan http://css-tricks.com/how-to-create-an-ie-only-stylesheet/

Hal lain yang dapat Anda lakukan:

Periksa browser dengan jQuery:

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

dalam hal ini Anda dapat mengubah aturan css untuk beberapa elemen atau menambahkan referensi tautan css baru:

baca ini: http://rickardnilsson.net/post/2008/08/02/Applying-stylesheets-dynamically-with-jQuery.aspx

BorisD
sumber
Lihat jawaban pengguna1324409 di atas untuk jawaban yang lebih akurat.
Chris Peters
2
Karena pembaruan jQuery, siapa pun yang menggunakan $ .browser.msie, harus menyertakan jquery-migrate.js dan kemudian ini akan berfungsi.
AspiringCanadian
1
Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya
Flimm
Tautan yang disediakan dalam jawaban sudah mati.
Pankaj
8

Anda perlu memberi ruang untuk <!-- [if !IE] --> blok Full css saya sebagai berikut, karena IE8 buruk dengan kueri media

<!-- 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] -->
John Hayford
sumber
Terima kasih atas komentar Anda tetapi jika saya menggunakan <! - [if! IE] -> <link rel = "stylesheet" type = "teks / css" href = "/ stylesheets / no-ie.csss" /> <! - [endif] -> lalu browser lain juga menerapkan ini.
user1516788
3
Bukankah itu intinya, agar browser lain menerapkan bagian itu?
John Hayford
1
-1: !IETeknik yang disebutkan di sini sebenarnya akan menjalankan blok komentar untuk IE 7 sampai 10.
Ian Campbell
1
Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya
Flimm
8

Untuk menargetkan Pengguna IE:

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

Untuk menargetkan semua orang lain:

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

Komentar Bersyarat hanya dapat dideteksi oleh Internet Explorer, semua Peramban lain memasangnya sebagai Komentar normal.

Untuk menargetkan IE 6,7 dll. Anda harus menggunakan "Greater Than Equal" atau "Lesser Than (Equal)" dalam Pernyataan If. Seperti ini.

Lebih besar dari atau sama dengan:

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

Kurang dari:

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

Sumber: mediacollege.com

Munchies
sumber
2
Catatan: Komentar bersyarat ini tidak lagi didukung dari IE 10 dan seterusnya
Flimm
7

Ini untuk sampai 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>

Ini untuk setelah IE9

  @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {enter your CSS here}
Chintu anak yang keren
sumber
5

Untuk browser IE:

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

Untuk semua browser non-IE:

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

Untuk semua IE lebih dari 8 ATAU semua browser non-IE:

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

Komentar bersyarat adalah komentar yang dimulai dengan <!--[if IE]>yang tidak dapat dibaca oleh browser apa pun kecuali IE.

dari 2011 Komentar bersyarat tidak didukung mulai bentuk IE 10 seperti yang diumumkan oleh Microsoft pada waktu itu https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx

Satu-satunya pilihan untuk menggunakan komentar Bersyarat adalah meminta IE untuk menjalankan situs Anda sebagai IE 9 yang mendukung komentar Bersyarat.

Anda dapat menulis file css dan / atau js Anda sendiri untuk contohnya saja dan browser lain tidak akan memuat atau menjalankannya.

cuplikan kode ini menunjukkan cara membuat IE 10 atau 11 berjalan ie-only.css dan ie-only.js yang berisi kode khusus untuk menyelesaikan masalah kompatibilitas 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>
Sherif yang teduh
sumber
1

Ini berfungsi untuk saya di semua browser yang lebih besar dari versi 6 (IE7, 8, 9, 10, dll, Chrome 3 hingga seperti sekarang, dan FF ver 3 hingga seperti sekarang):

//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;
        }
Fandango68
sumber
0

Saya menggunakan javascript ini untuk mendeteksi browser 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");
}
Muflix
sumber
0

Terima kasih Fernando68, saya menggunakan ini:

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.');
     });
}
Rodrigo Prazim
sumber
-1

Saya mendapatkan kode ini berfungsi di browser saya:

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

Catatan untuk kode ini: HTML5 Shiv dan Respond.js dukungan IE8 untuk elemen HTML5 dan permintaan media

Chetabahana
sumber