Je me suis rendu fou en essayant de faire fonctionner les conditions conditionnelles et je n'ai pas de chance. Quelqu'un peut-il expliquer ce que je fais mal?
Voici mon code:
<!--[if IE 10]>
IE IS VERSION 10<br />
<![endif]-->
<!--[if !IE]><!-->
Browser is not IE
<!--<![endif]-->
<!--[if lt IE 9]>
IE IS LESS THAN VERSION 9<br />
<![endif]-->
Ce qui se passe est frustrant et incohérent. Lorsque je charge la page avec le code ci-dessus dans IE8 il obtient le message "IE IS MOINS QUE LA VERSION 9" Très bien, non? parce que quand je charge la même page dans IE1 je reçois le message "Le navigateur n'est pas IE"
Pourquoi pense-t-il qu'IE10 n'est pas un navigateur IE?! J'ai exploré page après page mais il ne semble pas y avoir de problème avec mon code par rapport à ce que j'ai trouvé .
Solution CSS:
Si vous souhaitez appliquer uniquement la base CSS sur le navigateur, vous pouvez essayer:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* Put your IE-only styles here. Works for IS 10 & IE 11*/
}
Solution JavaScript:
IE 10 ne prend pas en charge les instructions conditionnelles.
Instructions conditionnelles dans Internet Explorer 10. . Il traitera les commentaires conditionnels comme des commentaires HTML normaux et sera entièrement ignoré.
Utilisez une bibliothèque de détection de fonctionnalités telle que Modernizr au lieu de la détection du navigateur.
trouvé une solution sur web impressionnants dans ce commentaire :
La solution est:
if (Function('/*@cc_on return document.documentMode===10@*/')()) {
alert('IE 10');
} else {
alert('Not IE 10');
}
Il
Je suis surpris que personne n'ait ajouté de solution uniquement CSS. Si vous souhaitez simplement utiliser css, utilisez une instruction comme celle-ci:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* Put your IE-only styles here. Works for IS 10 & IE 11*/
}
De cette façon, vous n'avez pas à vous fier à jquery ou à tout balisage html. Il suffit de le poster dans le css et vous êtes prêt à partir.
Maintenant, c'est un hack? Probable. Cela dépend de l'utilisation de la balise à contraste élevé de Microsoft, mais comme aucun autre navigateur n'utilise la balise ms, vous devriez être prêt à partir.
Enfin, consultez ces pages pour plus d'informations:
IE 10, 11 et vers le haut ne prend plus en charge les commentaires conditionnels.
Voir cette réponse: https://stackoverflow.com/a/22187600/1498739
IE 10 a supprimé les commentaires conditionnels.
Vous pouvez faire quelque chose de similaire en javascript comme ceci:
if ($.browser.msie && $.browser.version === 10) {
// stuff here (like adding an IE10 class to the body or html tag
}
Essayez d'ajouter la balise META suivante en haut de la page pour activer le comportement d'Internet Explorer 9:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
En effet, les commentaires conditionnels ont été supprimés dans les modes Internet Explorer 10 et les modes excentriques pour une meilleure interopérabilité et conformité avec HTML5. Cela signifie que les commentaires conditionnels sont désormais traités comme des commentaires réguliers, comme dans les autres navigateurs. Cette modification peut avoir une incidence sur les pages écrites exclusivement pour Windows Internet Explorer ou les pages qui utilisent le reniflement du navigateur pour modifier leur comportement dans Internet Explorer.