2011-11-10 17 views
20

Ho una pagina HTML.Come includere un file JavaScript remoto in modo condizionale?

In questo, secondo il browser, ho bisogno di includere un file JavaScript separato.

Com'è possibile?

<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

possibile duplicato di [Include file JavaScript all'interno del file JavaScript?] (Http://stackoverflow.com/questions/950087/include-javascript-file-inside-javascript-file) –

risposta

18

E, infine, se si sta già utilizzando jQuery nel progetto e appena lasciato il tag per esso, è possibile utilizzare $.getScript

+0

Grazie, che funziona – Linto

6

Utilizzare conditional comments solo HTML in IE.

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

Grazie per il commento, puoi spiegare in detail – Linto

+0

Penso che la sintassi sarebbe come: '' ' non-ie-script ' (vedere http://msdn.microsoft.com/en-us/library/ms537512(v=vs. 85) .aspx) –

+0

Vedere il codice aggiuntivo – TJHeuvel

12

Ecco un modo, forse non il migliore.

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

+1

Mi piace in questo modo il migliore perché si adatta perfettamente con gli altri tag '

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> 

Naturalmente, si potrebbe anche dividere l'operatore ternario sopra per i tuoi gusti ..

+0

perché 'regScript' in 5a linea? – vladkras

0

Ti consiglio di utilizzare LAB.js o YepNope (caricatori di script). Entrambi fanno un grande sforzo per caricare gli script esterni nel miglior modo possibile.

Per un esempio, utilizzando YepNope, con due carichi condizionali:

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> 

semplice e facile. 1 riga per file JS.

Problemi correlati