javascript - qué - Cómo cargar un script solo en IE
script html ejemplos (6)
Necesito que un script en particular se active solo en los navegadores de Internet Explorer.
He intentado esto:
<!--[if IE]>
<script></script>
<![endif]-->
Desafortunadamente, esto realmente detiene la carga del script.
EDITAR: para todos los que me preguntan por qué necesito esto: IE hace que el desplazamiento sea extremadamente agitado cuando se utilizan algunas animaciones. Para abordar esto, necesito implementar un script que proporcione un desplazamiento suave a IE. No quiero aplicarlo a otros navegadores, ya que no lo necesitan y esta secuencia de comandos, aunque hacer que el desplazamiento sea más suave también lo hace un poco natural.
La detección de funciones es un mejor enfoque. Recomiendo mirar Modernizr para mejorar progresivamente su solución cuando los dispositivos / navegadores son capaces de admitirla.
Este enfoque basado en CSS a veces también funciona, dependiendo de para qué lo necesite.
Pon esto en el <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]-->
Puede modificar este script para ejecutar su JavaScript específico de 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>
Puede usar javascript para detectar IE e insertar su script dinámicamente:
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 puedes usar jQuery puedes usar un código más corto:
if (ua.indexOf("MSIE ") != -1 || !!navigator.userAgent.match(/Trident.*rv/:11/./)) {
$.getScript(''YOUR_JS_SCRIPT.js'');
}
Solución encontrada en esta publicación Compruebe si el usuario está utilizando IE con jQuery
Si alguien sigue buscando ejecutar Javascript específico de IE, este código aún funciona probado en IE (11) y no en navegadores de IE (Chrome, Firefox, Edge)
<script type="text/javascript">
if(/MSIE /d|Trident.*rv:/.test(navigator.userAgent))
document.write(''<script src="../nolng/js/ex1IE.js"><//script>
<script src="../nolng/js/ex2IE.js"><//script>'');
else
document.write(''<script src="../nolng/js/ex1.js"><//script>
<script src="../nolng/js/ex2.js"><//script>'');
</script>
Tengo curiosidad por saber por qué necesita dirigirse específicamente a los navegadores IE, pero el siguiente código debería funcionar si realmente es lo que necesita hacer:
<script type="text/javascript">
if(/MSIE /d|Trident.*rv:/.test(navigator.userAgent))
document.write(''<script src="somescript.js"><//script>'');
</script>
La primera mitad de Regex ( MSIE /d
) es para detectar Internet Explorer 10 e inferior. La segunda mitad es para detectar IE11 ( Trident.*rv:
.
Si la cadena de agente de usuario del navegador coincide con ese patrón, agregará somescript.js
a la página.
currentScript
es supported con todos los navegadores además de IE
<script>
// self-invoked wrapper for scoping the `document` variable
!function( d ) {
if( !d.currentScript ){
var s = d.createElement( ''script'' );
s.src = ''ie.js'';
d.head.appendChild( s );
}
}(document)
</script>
Lo anterior agregará condicionalmente un archivo de script solo para los navegadores IE.