2011-11-10 14 views
20

Tengo una página HTML.¿Cómo incluir un archivo JavaScript remoto condicionalmente?

En eso, según el navegador, necesito incluir un archivo JavaScript por separado.

¿Cómo es posible?

<script type="text/javascript"> 
if(navigator.appName == 'Microsoft Internet Explorer') 
{ 
//here i need to include one.js 
} 
else 
{ 
//here i need to include two.js 
} 

</script> 
+1

posible duplicado de [Incluir archivo JavaScript dentro del archivo JavaScript?] (Http://stackoverflow.com/questions/950087/include-javascript-file-inside-javascript-file) –

Respuesta

18

Y finalmente, si usted ya está usando jQuery en su proyecto y justo a la izquierda por la etiqueta para que ésta, puede utilizar $.getScript

+0

Gracias, que funciona – Linto

6

Usando conditional comments usted algo de HTML sólo en IE.

<!--[if IE]> 
<script src='iescript.js'></script> 
<![endif]--> 
+0

Gracias por el comentario, ¿puede explicar en detalle – Linto

+0

Creo que la sintaxis sería como: '' ' non-ie-script ' (ver http://msdn.microsoft.com/en-us/library/ms537512(v=vs. 85) .aspx) –

+0

Ver el código adicional – TJHeuvel

12

Aquí hay una manera, posiblemente no la mejor.

<script type="text/javascript"> 
if(navigator.appName == 'Microsoft Internet Explorer') 
{ 
    document.write("<script tag here>"); 
} 
else 
{ 
    document.write("<other script tag here>"); 
} 

+1

Me gusta de esta manera la mejor porque encaja perfectamente en línea con las otras etiquetas '

1
<script type="text/javascript"> 
var src = navigator.appName == "Microsoft Internet Explorer" ? "one.js" : "two.js"; 

var script = document.createElement("script"); 
regScript.setAttribute("src", src); 
document.getElementsByTagName("head")[0].appendChild(script); 
</script> 

Por supuesto, también se puede dividir el operador ternario superior a a su gusto ..

+0

¿por qué 'regScript' en la 5ta línea? – vladkras

0

Le recomiendo que use LAB.js o YepNope (cargadores de scripts). Ambos hacen un gran esfuerzo al cargar scripts externos de la mejor manera posible.

Por ejemplo, el uso de YepNope, con dos cargas condicionales:

var agent = navigator.userAgent; 
yepnope({ 
    test : /(msie) ([\w.]+)/.test(agent), // internet explorer 
    yep : 'ie.js', 
    nope : 'other-script-if-you-want.js' 
}); 
yepnope({ 
    test : /(mozilla)(?:.*? rv:([\w.]+))?/.test(agent), // firefox 
    yep : 'firefox.js' 
}); 
0
<script type="text/javascript"> 
    if(condition===true){ 
    document.write(unescape(
     '%3Cscript src="file1.js"%3E%3C/script%3E'+ 
     '%3Cscript src="file2.js"%3E%3C/script%3E' 
    )); 
    } 
</script> 

simple y fácil. 1 línea por archivo JS.

Cuestiones relacionadas