web-dev-qa-db-fra.com

Si le navigateur est Internet Explorer: exécutez un autre script

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? }

25
dimmy4

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]>
21
Flack

Vous pouvez faire quelque chose comme ceci pour inclure du javascript spécifique à IE: 

<!--[IF IE]>
    <script type="text/javascript">
        // IE stuff
    </script>
<![endif]-->
20
Seth

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.
}
12
Y.Puzyrenko

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>
12
Ender

var browserName = navigator.appName; if (browserName == "Microsoft Internet Explorer") { document.write ("Votre code HTML pour IE") }

4
MayorMonty

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> 
2
dimmy4

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")
  }
1
Péter Zajácz

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.
0
Victor F

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

0
Żabojad