Cargar dinámicamente hojas de estilo css no funciona en IE

Cargo dinámicamente una hoja de estilo CSS (con un poco de ayuda de jQuery) como esta:

var head = document.getElementsByTagName('head')[0]; $(document.createElement('link')) .attr({ type: 'text/css', href: '../../mz/mz.css', rel: 'stylesheet' }) .appendTo(head); 

Esto funciona bien en Firefox y Google Chrome, pero no en IE.

¿Alguna ayuda? Gracias

Una vez que IE ha procesado todos los estilos cargados con la página, la única manera confiable de agregar otra hoja de estilo es con document.createStyleSheet(url)

Consulte el artículo de MSDN en createStyleSheet para obtener más información.

 url = 'style.css'; if (document.createStyleSheet) { document.createStyleSheet(url); } else { $('').appendTo('head'); } 

Necesitas configurar el href attr último y solo después de que el elemento de enlace se anexa a la cabeza:

 $('') .appendTo('head') .attr({type : 'text/css', rel : 'stylesheet'}) .attr('href', '/css/your_css_file.css'); 

Esto también parece funcionar en IE:

 var link = document.createElement ('enlace');
 link.rel = 'hoja de estilos';
 link.type = 'text / css';
 link.href = '/includes/style.css';
 document.getElementsByTagName ('head') [0] .appendChild (enlace);

Esto también podría tener algo que ver con eso. Tomado del artículo de Soporte de Microsoft :

Los estilos en una página web faltan o parecen incorrectos cuando la página se carga en las versiones de Microsoft Internet Explorer …

… Este problema se produce porque las siguientes condiciones son ciertas en Internet Explorer:

  • No se aplican todas las tags de estilo después de las primeras 31 tags de estilo.

  • Todas las reglas de estilo después de las primeras reglas 4.095 no se aplican.

  • En páginas que usan la regla @import para importar continuamente hojas de estilo externas que importan otras hojas de estilo, se ignoran las hojas de estilo que tienen más de tres niveles de profundidad.

Parece que

 $('').appendTo('head'); 

funciona también en IE siempre que la URL sea un URI totalmente calificado, incluido el protocolo …

Abra ie8 sin el depurador abierto. Cuando llegue después del punto de la hoja de estilos dinámica … abra el depurador y listo, deberían estar allí.