Изменение innerHTML элемента <style>в IE8 - PullRequest
14 голосов
/ 09 июля 2011

Я создаю элемент стиля, и мне нужно добавить в него немного 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);

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

Ответы [ 2 ]

14 голосов
/ 21 августа 2011

Использование .styleSheet.cssText

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

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

Это медленно в IE8:

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

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

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

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

document.body.style.background = "red";
0 голосов
/ 09 июля 2011

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

...