2011-07-09 11 views
14

Tworzę element stylu i potrzebuję umieścić w nim trochę CSS. Poniższy kod działa w Chrome, Safari i FF, ale nie w IE8:Modyfikowanie innerHTML elementu <style> w IE8

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

styleElement.type = "text/css"; 

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

document.head.appendChild(styleElement); 

w IE8, kod nie powiedzie się, jeśli chodzi o części innerHTML. Próbowałem już:

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

styleElement.appendChild(inner); 

Ale to również kończy się niepowodzeniem z "Niespodziewanym wywołaniem metody lub dostępu do właściwości". Szukam obejścia lub poprawki.

Odpowiedz

14

Używaj .styleSheet.cssText

UWAGA: To wydaje się być bardzo powolny w porównaniu do modyfikowania IE8 indywidualne elementy stylu.

Czy jest szybszy sposób dynamicznego modyfikowania arkuszy stylów w IE?

jest wolna IE8:

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

to również powolne IE8 (przyjmuje się, przedmiot styl do modyfikacji jest element stylu 1 miejsce w głowicy)

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

to szybko w IE8:

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

Spróbuj użyć styleElement.innerText

+2

Nie. To nie powiedzie się z tym samym, "Nieznany błąd środowiska wykonawczego". – TheFuzzball