Esta es la forma de hacerlo de la "vieja escuela", que con suerte funciona en todos los navegadores. En teoría, usaría setAttribute
desafortunadamente IE6 no lo admite consistentemente.
var cssId = 'myCss'; // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.id = cssId;
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'http://website.com/css/stylesheet.css';
link.media = 'all';
head.appendChild(link);
}
Este ejemplo comprueba si el CSS ya se ha agregado, por lo que solo lo agrega una vez.
Ponga ese código en un archivo javascript, haga que el usuario final simplemente incluya el javascript, y asegúrese de que la ruta CSS sea absoluta, de modo que se cargue desde sus servidores.
VanillaJS
He aquí un ejemplo que usa llano JavaScript para inyectar un enlace de CSS en el elemento head
basado en la parte de nombre de archivo de la URL:
<script type="text/javascript">
var file = location.pathname.split("/").pop();
var link = document.createElement("link");
link.href = file.substr(0, file.lastIndexOf(".")) + ".css";
link.type = "text/css";
link.rel = "stylesheet";
link.media = "screen,print";
document.getElementsByTagName("head")[0].appendChild(link);
</script>
Introduce el código justo antes del cierre head
la etiqueta y el CSS se cargarán antes de que se represente la página. El uso de un archivo JavaScript externo (.js
) provocará que aparezca un Flash de contenido sin estilo (FOUC).
También se pregunta sobre jQuery http://stackoverflow.com/questions/2685614/load-external-css-file-like -scripts-in-jquery-which-is-compatible-in-ie-also – jcubic