¿Qué demonios? ¿Por qué diablos todos están defendiendo document.write()? Bastante cierto que hemos avanzado más allá de esto como práctica estándar en este punto; document.write ni siquiera es válido si estás en una configuración XHTML.
La mejor manera de hacer esto sería algo así como lo siguiente (también aquí, para una mejor resaltado/análisis: https://gist.github.com/767131):
/* Since script loading is dynamic/async, we take
a callback function with our loadScript call
that executes once the script is done downloading/parsing
on the page.
*/
var loadScript = function(src, callbackfn) {
var newScript = document.createElement("script");
newScript.type = "text/javascript";
newScript.setAttribute("async", "true");
newScript.setAttribute("src", src);
if(newScript.readyState) {
newScript.onreadystatechange = function() {
if(/loaded|complete/.test(newScript.readyState)) callbackfn();
}
} else {
newScript.addEventListener("load", callbackfn, false);
}
document.documentElement.firstChild.appendChild(newScript);
}
if(a) {
loadScript("lulz.js", function() { ... });
} else {
loadScript("other_lulz.js", function() { ... });
}
Si tiene jQuery o una biblioteca similar en la página, se puede desconecte mi función loadScript e inserte su función apropiada (ala $ .getScript, etc.).
Crear un elemento de script – Stardust