1

Тема: Запись в контейнер <style>сюда</style>

Не могу перезаписать данные в <style></style>, во всех браузерах работает, в ИЕ нет. ИЕ читать читает, а изменять отказывается.
Пробовал

innerHTML
innerText

и экзотику, эти методы чистый текст пишут, а внутрь <style></style>, нет

replaceChild()
createTextNode()
insertAdjacentHTML()

Подключать класс или писать стили в каждый элемент, можно, но накладно, слишком много элементов, а так нужно изменить одно единственное место.
В этом конкретном случае требуется кроссбраузерность, поэтому переписывать внешний файл стилей не подходит.

Кто с таким сталкивался? как победили?

2 (изменено: wisgest, 2012-12-14 01:19:07)

Re: Запись в контейнер <style>сюда</style>

Любитель пишет:

В этом конкретном случае требуется кроссбраузерность, поэтому переписывать внешний файл стилей не подходит.

Под «неподходящим» имеется ввиду что-то вроде

<HTML>
<HEAD>
<LINK id='ss' rel='stylesheet' type='text/css' href='javascript:"";'>

<SCRIPT language='JavaScript' type='text/javascript'>
var cssText1="\
  body {color: red;}\
  p {font-weight: bold;}\
";

var cssText2="\
  body {background-color: silver;}\
  p {font-style: italic;}\
";

var styleElement=document.getElementById("ss");

window.onload=function () {
  styleElement.href="javascript:cssText1;";
  window.setTimeout('styleElement.href="javascript:cssText2;";', 2000);
};
</SCRIPT>
</HEAD>

<BODY>
<P>Hello, world!</P>
</BODY></HTML>

?
Хотя я думаю, это решение можно доработать до кроссбраузерного.

3

Re: Запись в контейнер <style>сюда</style>

Спасибо, посмотрю.

4 (изменено: wisgest, 2012-12-14 05:54:59)

Re: Запись в контейнер <style>сюда</style>

Вот ещё решение (IE5+) (пере)записи таблицы стилей «чистым текстом»:

<HTML>
<HEAD>
<STYLE id='ss' type='text/css'></STYLE>

<SCRIPT language='JavaScript' type='text/javascript'>
var cssText1="\
  body {color: red;}\
  p {font-weight: bold;}\
";

var cssText2="\
  body {background-color: silver;}\
  p {font-style: italic;}\
";

var styleElement=document.getElementById("ss");
var styleSheet=styleElement.styleSheet;
////или вместо предыдущих двух строк:
//var styleSheet=document.styleSheets.item(0);
//// (обратная ссылка на объект HTML-элемента таблицы стилей:
//// styleSheet.owningElement === styleElement)

////Можно создать и на ходу, без предварительного создания элемента <STYLE>:
//var styleSheet=document.createStyleSheet();

window.onload=function () {
  styleSheet.cssText=cssText1;
  window.setTimeout('styleSheet.cssText=cssText2;', 2000);
};
</SCRIPT>
</HEAD>

<BODY>
<P>Hello, world!</P>
</BODY></HTML>