web-dev-qa-db-fra.com

<! - [if! IE]> ne fonctionne pas

J'ai du mal à obtenir 

<!--[if !IE]>

travailler. Je me demande si c'est parce que j'ai cela dans mon document 

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

Quand j'ajoute 

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

à mon en-tête pour une raison quelconque, cela ne fonctionne pas. Cependant si j'ajoute 

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

à la page html réelle (dans l'en-tête) cela fonctionne . Des suggestions?

Mise à jour de ma question

Ok, quand j'ai supprimé <!-->J'ai seulement vérifié dans IE qui fonctionnait, mais maintenant dans FF, le no-ie.css avait également été appliqué à FF. Alors j'ai rajouté dans le <!-->et enlevé le/(et l'ajouté dans le modèle principal pour que le cms ne l'ajoute pas en arrière) et tout fonctionne en arrière dans FF mais maintenant la feuille de style est appliquée à IE! j'ai essayé

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

et 

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

Et cela n'a pas fonctionné . Essentiellement, j'essaie de faire fonctionner cette page http://css-tricks.com/examples/ResponsiveTables/responsive.php mais déplace le css dans une feuille de style. Cela doit sûrement être simple. Qu'est-ce que je rate? Je préfèrerais ne pas utiliser JQuery si je n'ai pas à .

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

Remarque: Ces commentaires conditionnels sont ne sont plus pris en charge à partir de IE 10 .

221
Thinking80s

Les navigateurs autres que IE traitent les instructions conditionnelles comme des commentaires, car elles sont placées entre des balises de commentaire.

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

Toutefois, lorsque vous ciblez un navigateur qui n'est pas IE, vous devez utiliser 2 commentaires, un avant et un après le code. IE ignorera le code entre eux, alors que les autres navigateurs le traiteront comme du code normal. La syntaxe de ciblage des navigateurs non-IE est donc la suivante:

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

Remarque: Ces commentaires conditionnels sont ne sont plus pris en charge à partir de IE 10 .

64
user1324409

Une mise à jour si quelqu'un atteint encore cette page, se demandant pourquoi le ciblage, par exemple, ne fonctionne pas. IE 10 et les versions ultérieures ne prennent plus en charge les commentaires conditionnels. Sur le site officiel de MS: 

La prise en charge des commentaires conditionnels a été supprimée dans Internet Explorer 10 modes standards et quirks pour une interopérabilité améliorée et conformité avec HTML5.

Veuillez voir ici pour plus de détails: http://msdn.Microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

Si vous avez désespérément besoin de cibler ie, vous pouvez utiliser ce code jQuery pour ajouter une classe ie à, puis utiliser la classe .ie dans votre CSS pour cibler les navigateurs. 

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

Mise à jour: $ .browser n'est plus disponible après jQuery 1.9. Si vous effectuez une mise à niveau vers jQuery supérieur à 1.9 ou si vous l'utilisez déjà, vous pouvez inclure le script de migration jQuery après jQuery afin qu'il ajoute les parties manquantes: plugin jQuery Migrate

Vous pouvez également consulter ce fil pour des solutions de contournement possibles: erreur browser.msie après la mise à jour vers jQuery 1.9.1

37
Selay

J'utilise ça et ça marche:

<!--[if !IE]><!--> if it is not IE <!--<![endif]-->
13
Francis

La syntaxe recommandée par Microsoft pour les «commentaires» conditionnels révélés par le bas est la suivante:

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

Ce ne sont pas des commentaires, mais ils fonctionnent correctement.

12
user1479055

Vous devez mettre un espace pour le <!-- [if !IE] --> Mon bloc css complet va comme suit, car IE8 est terrible avec les requêtes multimédia

<!-- IE 8 or below -->   
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css"  href="/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="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
    href="/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] -->
8
John Hayford

Pour cibler les utilisateurs IE:

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

Pour cibler tous les autres:

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

Les commentaires conditionnels ne peuvent être détectés que par Internet Explorer. Tous les autres navigateurs le traitent comme des commentaires normaux.

Pour cibler IE 6,7 etc. Vous devez utiliser "Supérieur à égal" ou "Inférieur à (égal)" dans l'instruction If. Comme ça.

Meilleur que ou égal:

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

Inférieur à:

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

Source: mediacollege.com

8
Munchies

Tout d'abord, la bonne syntaxe est la suivante:

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

Essayez ce post: http://www.quirksmode.org/css/condcom.html Et http://css-tricks.com/how-to-create -an-ie-only-stylesheet/

Une autre chose que vous pouvez faire:

Vérifiez le navigateur avec jQuery:

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

dans ce cas, vous pouvez modifier les règles css de certains éléments ou ajouter new reference css link:

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

7
BorisD

Ceci est pour jusqu'à 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>

Ceci est pour après IE9

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

Pour le navigateur IE:

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

Pour tous les navigateurs non-IE:

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

Pour tous IE supérieurs à 8 OR tous les navigateurs non IE:

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

Un commentaire conditionnel est un commentaire qui commence par <!--[if IE]> et qui ne peut être lu par aucun navigateur, sauf IE.

à partir de 2011, le commentaire conditionnel n'est pas pris en charge à partir du formulaire IE 10 annoncé par Microsoft à ce moment-là https://msdn.Microsoft.com/en-us/library/hh801214(v=vs.85). aspx

La seule option permettant d’utiliser les commentaires conditionnels consiste à demander à IE d’exécuter votre site en tant que IE 9, qui prend en charge les commentaires conditionnels.

vous pouvez écrire vos propres fichiers css et/ou js pour, par exemple, et les autres navigateurs ne le chargeront ou ne l'exécuteront pas.

cet extrait de code montre comment faire en sorte que IE 10 ou 11 exécute ie-only.css et ie-only.js, qui contient des codes personnalisés permettant de résoudre les problèmes de compatibilité 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>
3
shady sherif

Cela fonctionne pour moi sur tous les navigateurs supérieurs à la version 6 (IE7, 8, 9, 10, etc., Chrome 3 à ce qu'il est maintenant et FF ver 3 à ce qu'il est maintenant):

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

J'utilise ce javascript pour détecter le navigateur 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
Muflix

Merci Fernando68, j'ai utilisé ceci:

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

Si vous travaillez avec IE 10 ou une version ultérieure, comme indiqué dans http://tanalin.com/fr/articles/ie-version-js/ , les commentaires conditionnels ne sont plus pris en charge. Vous pouvez également consulter https://Gist.github.com/jasongaylord/5733469 en tant que méthode alternative, la version de Trident étant également vérifiée à partir de navigator.userAgent. Ceci est également vérifié si le navigateur fonctionne en mode de compatibilité.

0
Toshihiko