el error consiste cuando se intentar asignar un string desde un elemento a la propiedad cssText del objeto styleSheet. el error es tan grave que produce un cuelgue de iexplore, tanto en version 6 y 7. no lo he intentado en la version 8, lo cual me gustaria si alguien pudiera confirmarlo. he intentado varias formas del codigo siempre produciendome el mismo resultado. a continuación, cada bloque de codigo son los diferentes intentos. fijense que el codigo no varia mucho, solamente cambia de donde se intenta obtener el string.
Código:
<html><head><style type="text/css"></style> <script type="text/javascript"> onload = function(){ document.styleSheets[0].cssText = document.getElementById("some").value; } </script></head> <body> <input type="text" id="some" value="" /><!-- notese que value esta vacio --> </body></html>
Código:
<html><head><style type="text/css"></style> <script type="text/javascript"> onload = function(){ var input = document.createElement("input"); document.styleSheets[0].cssText = input.value; } </script></head> <body> Empty </body></html>
Código:
sin embargo, el proximo codigo no cuelga iexplorer.<html><head><style type="text/css"></style> <script type="text/javascript"> onload = function(){ document.styleSheets[0].cssText = document.getElementById("some").innerHTML; } </script></head> <body> <h1 id="some"> </h1><!-- notese el espacio dentro de H1, se produce tanto con cualquier caracter en blanco (white-space character: espacio, tabular, salto de linea) como vacio --> </body></html>
Código:
utilizando la misma base del anterior, almacenando en una variable el string.<html><head><style type="text/css"></style> <script type="text/javascript"> var text = ""; // string vacio; onload = function(){ document.styleSheets[0].cssText = text; } </script></head> <body></body></html>
Código:
conclusion. tenemos que ser cuidadoso y consciente de donde viene la cadena. como se demostro, cuando la cadena viene de una variable de javascript iexplorer no se cuelga. sin embargo, si la fuente viene de un elemento, independientemente se haya creado el elemento con javascript o este presente en el documento, iexplorer se cuelga. lo que me deja pensando es que este error debe estar relacionado al DOM y a los espacios en blanco. pues como alguno de ustedes ya sabran, el agente de iexplorer no genera nodo en aquellos elementos que no contiene caracteres imprimibles. <html><head><style type="text/css"></style> <script type="text/javascript"> onload = function(){ // almacenando el contenido en una variable para luego asignarla var text = document.getElementById("some").innerHTML; document.styleSheets[0].cssText = text; } </script></head> <body> <h1 id="some"> </h1> </body></html>