Comment charger un script uniquement dans IE

J'ai besoin d'un script particulier pour être déclenché dans les navigateurs Internet Explorer uniquement!

J'ai essayé ceci:

<!--[if IE]> <script></script> <![endif]--> 

Malheureusement, cela empêche le script d'être chargé.

EDIT: Pour tous ceux qui demandent pourquoi j'ai besoin de cela: IE rend le défilement extrêmement nerveux lors de l'utilisation de certaines animations. Pour répondre à cela, je dois implémenter un script qui offre un défilement rapide vers IE. Je ne veux pas l'appliquer à d'autres navigateurs car ils ne l'ont pas besoin et ce script, bien que rendre le défilement plus doux rend aussi un peu anormal.

Je suis curieux de savoir pourquoi vous devez spécifiquement cibler les navigateurs IE, mais le code suivant devrait fonctionner si c'est vraiment ce que vous devez faire:

 <script type="text/javascript"> if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent)) document.write('<script src="somescript.js"><\/script>'); </script> 

La première moitié de la Regex ( MSIE \d ) permet de détecter Internet Explorer 10 et ci-dessous. La deuxième moitié est pour détecter IE11 ( Trident.*rv: Rv:).

Si la chaîne de l'agent utilisateur du navigateur correspond à ce modèle, elle ajoutera somescript.js à la page.

La détection des fonctionnalités est une meilleure approche – je recommande de rechercher Modernizr pour améliorer progressivement votre solution lorsque les périphériques / navigateurs sont capables de le supporter.

Cette approche basée sur CSS fonctionne parfois aussi, selon ce dont vous avez besoin.

Mettez ceci dans la <head>

 <!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html class=""> <!--<![endif]--> 

Article de référence – http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

Vous pouvez modifier ce script pour exécuter votre JavaScript spécifique à IE:

 var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number alert('IE ' + parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)))); else alert('otherbrowser'); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

Vous pouvez utiliser javascript pour détecter l'IE et insérer votre script dynamicaly:

 var ua = window.navigator.userAgent; if (ua.indexOf("MSIE ") != -1|| !!navigator.userAgent.match(/Trident.*rv\:11\./)) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.setAttribute('src', 'YOUR_JS_SCRIPT.js'); script.setAttribute('type', 'text/javascript'); script.setAttribute('async', 'false'); head.appendChild(script); } 

Si vous pouvez utiliser jQuery, vous pouvez utiliser un code plus court:

 if (ua.indexOf("MSIE ") != -1 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) { $.getScript('YOUR_JS_SCRIPT.js'); } 

Solution trouvée dans cette publication Vérifiez si l'utilisateur utilise IE avec jQuery