Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/12/2013, 07:09
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 10 meses
Puntos: 32
Crear hoja de estilo CSS con javascript

Buenas,

Me interesaría saber cómo crear una hoja de estilo con javascript, insertarla en head y luego obtener un valor para poder referenciarla y usarla a través de document.styleSheets. He pensado lo siguiente:

1) Creo un elemento link y le inserto el atributo type="text/css"
2) Inserto dicho elemento link usando document.head.appendChild( ... )
3) Guardo en una variable indice el valor document.styleSheets.length - 1 ( ¿seria la referencia a la ultima hoja de estilos insertada )
4) Inserto en doucment.styleSheets[indice] varias reglas mediante el método insertRule

Dudo, sobretodo, de si el punto 3 es correcto. Pues no se si del punto 2 se deduce que se insetará una nueva hoja de estilos al final de document.styleSheets . También he leído que StyleSheetList( la clase de document.styleSheets ) no tiene metodo para insertarle hojas de estilo.

También dudo en el punto 1. Pues no sé que comportamiento tendría una hoja de estilo que no haga referencia a ningún fichero en concreto con href.

Edit:
Con códigos como estos puede verse que añadir un link a document head no afecta a document.styleSheets:
Código Javascript:
Ver original
  1. console.log( document.styleSheets.length );
  2.     css = document.createElement( 'link' );
  3.     css.setAttribute( 'type', 'text/css' );
  4.     document.getElementsByTagName( 'head' )[0].appendChild( css );
  5.     console.log( document.styleSheets.length );

Un saludo y gracias!

Última edición por Pantaláimon; 09/12/2013 a las 08:38