Je charge dynamiquement une feuille de style CSS (avec un peu d'aide de jQuery) comme ceci:
var head = document.getElementsByTagName('head')[0];
$(document.createElement('link'))
.attr({ type: 'text/css', href: '../../mz/mz.css', rel: 'stylesheet' })
.appendTo(head);
Cela fonctionne bien dans Firefox et Google Chrome, mais pas dans IE.
De l'aide? Merci
Une fois que IE a traité tous les styles chargés avec la page, le seul moyen fiable d'ajouter une autre feuille de style est avec document.createStyleSheet(url)
Voir article MSDN sur createStyleSheet pour quelques détails supplémentaires.
url = 'style.css';
if (document.createStyleSheet)
{
document.createStyleSheet(url);
}
else
{
$('<link rel="stylesheet" type="text/css" href="' + url + '" />').appendTo('head');
}
Vous devez définir l'attribut href en dernier et uniquement après que l'élément de lien est ajouté à la tête:
$('<link>')
.appendTo('head')
.attr({type : 'text/css', rel : 'stylesheet'})
.attr('href', '/css/your_css_file.css');
Cela semble également fonctionner dans IE:
var link = document.createElement ('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = '/includes/style.css' ;;.. _________________document.getElementsByTagName('head')/1000.appendChild(link);;.____.]
Cela pourrait également avoir quelque chose à voir avec cela - Tiré de Article de support Microsoft :
Les styles sur une page Web sont manquants ou semblent incorrects lorsque la page se charge dans les versions de Microsoft Internet Explorer ...
... Ce problème se produit car les conditions suivantes sont remplies dans Internet Explorer:
Toutes les balises de style après les 31 premières balises de style ne sont pas appliquées.
Toutes les règles de style après les 4 095 premières règles ne sont pas appliquées.
Sur les pages qui utilisent la règle @import pour importer en continu des feuilles de style externes qui importent d'autres feuilles de style, les feuilles de style de plus de trois niveaux sont ignorées.
Il paraît que
$('<link rel="stylesheet" type="text/css" href="' + url + '" />').appendTo('head');
fonctionne également dans IE tant que l'url est un URI complet, y compris le protocole ...
Ouvrez ie8 sans débogueur ouvert. Lorsque vous arrivez au point de feuille de style dynamique ... ouvrez le débogueur et le tour est joué, ils devraient être là.