J'utilise un script de carrousel d'images assez lourd pour le navigateur. Cela fonctionne très bien dans Opera et Chrome, à moitié décent dans FF et me casse complètement dans IE. Je voudrais donc donner aux utilisateurs IE une alternative au HTML simple, sans action/JS.
Le script n'utilise pas MT ni jQuery et ses 380 lignes similaires à JS. Serait-il possible de donner aux utilisateurs IE une alternative HTML simple?
var browserName=navigator.appName;
if (browserName=="Microsoft Internet Explorer")
{
// what command can i use?
}
Cet article est assez explicatif: http://msdn.Microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx .
Si votre JS est discret, vous pouvez simplement utiliser:
<![if !IE]>
<script src...
<![endif]>
Vous pouvez faire quelque chose comme ceci pour inclure du javascript spécifique à IE:
<!--[IF IE]>
<script type="text/javascript">
// IE stuff
</script>
<![endif]-->
Pour IE10 +, les conditions standard ne fonctionnent pas à cause du changement de moteur ni pour d’autres raisons, car vous savez, c’est MSIE. Mais pour IE10 +, vous devez exécuter ce processus dans vos scripts.
if (!!navigator.userAgent.match(/Trident\/7\./)){
//do stuff for IE.
}
Vous définissez une valeur booléenne avec la valeur par défaut true, puis dans un commentaire conditionnel IE , définissez la valeur sur false et utilisez-la pour déterminer si votre code avancé doit être exécuté. Quelque chose comme:
<script type="text/javascript">var runFancy = true;</script>
<!--[if IE]>
<script type="text/javascript">
runFancy = false;
//any other IE specific stuff here
</script>
<![endif]-->
<script type="text/javascript">
if (runFancy) {
//do your code that works with sane browsers
}
</script>
var browserName = navigator.appName; if (browserName == "Microsoft Internet Explorer") { document.write ("Votre code HTML pour IE") }
Voici le script que j'ai utilisé et cela fonctionne comme un charme. J'ai utilisé la méthode booléenne suggérée par Ender, les autres utilisant uniquement le script spécifique IE ajoutant quelque chose à IE mais ne supprimant pas le code d'origine.
<script>runFancy = true;</script>
<!--[if IE]>
<script type="text/javascript">
runFancy = false;
</script> // <div>The HTML version for IE went here</div>
<![endif]-->
// Below is the script used for all other browsers:
<script src="accmenu/acac1.js" charset="utf-8" type="text/javascript"></script><script>ac1init_doc('',0)</script>
Essayez ceci: La langue système et la langue utilisateur sont indéfinies dans tous les navigateurs.
if(navigator.userLanguage !== "undefined" && navigator.systemLanguage !== "undefined" && navigator.userAgent.match(/trident/i)) {
alert("hello Explorer i catch U :D")
}
Testez-le dans tous les navigateurs:
<![if !IE]><script type="text/javascript">BROWSERIE = false;</script><![endif]>
<!--[if IE]><script type="text/javascript">BROWSERIE = true;</script><![endif]-->
Le premier commentaire conditionnel fonctionne sur les bons navigateurs, le second sur IE. C'est une var globale. Ensuite, vous pouvez y accéder depuis n’importe quelle partie ou n’importe quel JS inclus dans votre page, puis le tester, par exemple
console.log('isIE = ' + BROWSERIE);
console.log(typeof BROWSERIE);
if(BROWSERIE) $('.modal').removeClass('fade'); // for example, if `fade` causes an error in IE.
Notez que vous pouvez également déterminer en js pur dans quel navigateur votre script est exécuté via: window.navigator.userAgent
Cependant, ce n'est pas recommandé car il est configurable dans les paramètres du navigateur. Plus d'infos disponibles ici: https://developer.mozilla.org/fr/docs/DOM/window.navigator.userAgent