Изменение 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