Изменение innerHTML элемента <style> в IE8

Я создаю элемент стиля, и мне нужно поместить в него некоторый CSS. Нижеприведенный код работает в Chrome, Safari и FF, но не работает в IE8:

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

styleElement.type = "text/css";

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

document.head.appendChild(styleElement);

В IE8 код не работает, когда дело доходит до части innerHTML. Я пробовал делать:

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

styleElement.appendChild(inner);

Но это также терпит неудачу с "Неожиданным вызовом метода или доступа к свойствам". Я ищу обходное решение или исправление.

Ответы

Ответ 1

Используйте .styleSheet.cssText

ПРИМЕЧАНИЕ. В IE8 это кажется ДЕЙСТВИТЕЛЬНО медленным по сравнению с изменением стиля отдельных элементов.

Есть ли более быстрый способ динамического изменения таблиц стилей в IE?

В IE8 это медленно:

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

Это также медленно в IE8 (предполагается, что объект стиля, который нужно изменить, является элементом первого стиля в голове):

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

Это быстро в IE8:

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

Ответ 2

Попробуйте использовать styleElement.innerText