Voici la méthode "à l'ancienne", qui, je l'espère, fonctionne avec tous les navigateurs. En théorie, vous devriez utiliser setAttribute
Malheureusement, IE6 ne le prend pas en charge de manière cohérente.
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.example/css/stylesheet.css';
link.media = 'all';
head.appendChild(link);
}
Cet exemple vérifie si le CSS a déjà été ajouté, de sorte qu'il ne l'ajoute qu'une seule fois.
Placez ce code dans un fichier JavaScript, demandez à l'utilisateur final d'inclure simplement le JavaScript et assurez-vous que le chemin CSS est absolu afin qu'il soit chargé à partir de vos serveurs.
VanillaJS
Voici un exemple qui utilise un simple JavaScript pour injecter un lien CSS dans la page head
sur la base du nom de fichier de l'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>
Insérer le code juste avant la fermeture head
et le CSS sera chargé avant le rendu de la page. L'utilisation d'un code JavaScript externe ( .js
) provoquera un Flash de contenu non stylé ( FOUC ) pour apparaître.
0 votes
Il y a aussi une question sur jQuery stackoverflow.com/questions/2685614/