Aquí está la forma de hacerlo de la "vieja escuela", que con suerte funciona en todos los navegadores. En teoría, usaría setAttributedesafortunadamente IE6 no lo admite de manera consistente.
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 verifica si el CSS ya se agregó, por lo que lo agrega solo una vez.
Coloque 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 para que se cargue desde sus servidores.
VanillaJS
Aquí hay un ejemplo que usa JavaScript simple para inyectar un enlace CSS en el headelemento basado en la parte del 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>
Inserte el código justo antes de la headetiqueta de cierre y el CSS se cargará antes de que se renderice la página. El uso de un .jsarchivo externo JavaScript ( ) hará que aparezca un Flash de contenido sin estilo ( FOUC ).