2011-07-09 4 views
14

Je crée un élément de style et j'ai besoin de mettre du CSS dedans. Le code ci-dessous fonctionne dans Chrome, Safari et FF, mais échoue dans IE8:Modifier le innerHTML d'un élément <style> dans IE8

var styleElement = document.createElement("style"); 

styleElement.type = "text/css"; 

styleElement.innerHTML = "body{background:red}"; 

document.head.appendChild(styleElement); 

En IE8, le code échoue lorsqu'il s'agit de la partie innerHTML. J'ai essayé de faire:

var inner = document.createTextNode("body{background:red}"); 

styleElement.appendChild(inner); 

Mais cela échoue également avec "Appel inattendu à la méthode ou à l'accès aux propriétés". Je suis à la recherche d'une solution de contournement ou d'une solution.

Répondre

14

Utilisez .styleSheet.cssText

REMARQUE: cela semble être vraiment lent dans IE8 par rapport à la modification de style des éléments individuels.

Existe-t-il un moyen plus rapide de modifier dynamiquement des feuilles de style dans IE?

Ceci est lent dans IE8:

styleElement.styleSheet.cssText = "body{background:red}"; 

Ceci est également lente dans IE8 (suppose l'objet de style à modifier est l'élément premier style dans la tête):

document.styleSheets[0].cssText = "body{background:red}"; 

Ceci est rapide dans IE8:

document.body.style.background = "red"; 
-3

Essayez d'utiliser styleElement.innerText

+2

Nope. Cela échoue avec le même, "Erreur d'exécution inconnue." – TheFuzzball

Questions connexes