Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопрос к JustUser по IE 6/7
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Собственно имеется страница, на которой нужно вставить стиль динамически.
Естественно во всех браузерах все работает.
Но вот IE...
Я конечно знаю что в IE ниже 8-го тег STYLE может быть только readonly.
Я хотел бы узнать существует ли хак на все это дело для IE 6.
Седьмой я победил так:
Шестой же с этим кодом просто показывает черный экран.
Принцип решения не важен, главное чтобы оно было рабочим. styles это массив объектов, которые содержат не только ссылки до файлов стилей на сервере,
но и содержимое этих самых стилей, т.к. в остальных браузерах прекрасно работает innerHTML.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
DeepVarvar Оригинальное кросс-браузерное решение, которое осуществляется корректное функционирование в IE6-8, а также в низкофункциональных браузерах типа firefox, может быть сформировано следующим образом
STYLE, SCRIPT, what's the difference, they are merely elements of the DOM tree. For the normal browsers, yes, so creating a text node with the stylesheet body will work in Firefox. For IE, you need a workaround.
var hh1 = document.getElementsByTagName('head')[0];
hh1.appendChild(ss1);
Note that while in the SCRIPT case I took the liberty of skipping the type attribute, it's absolutely required here.
So with a bit of object sniffing, we can get a cross-browser solution:
var hh1 = document.getElementsByTagName('head')[0];
hh1.appendChild(ss1);
if(ss1.styleSheet){// IE
ss1.styleSheet.cssText = def;
}else{// the world
var tt1 = document.createTextNode(def);
ss1.appendChild(tt1);
}
Update: note that it's important for IE that you append the style to the head *before* setting its content. Otherwise IE678 will *crash* is the css string contains an @import. Go figure!
Кроме того для осуществления решения предполагаемой задачи, заключающейся в автоматическому включении группы информационных полей, размещенный во вторичном повышенном уровне базового элементного трактования, для которых обеспечивается ассоциация со стокой определения стилей текущего документа, может использования существенное множество walkaround-решений, заключающихся не в обеспечении установки требуемого link-элемента в заголовочную часть динамического образа страницы, размещенного в первичном пониженном уровне базового элементного трактования, а выполнение реальной группы действий, направленных на модификацию runtime-стилевых информационных полей у конкретных DOM-элементов
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
DeepVarvar
Отправлено: 01 Июня, 2012 - 15:36:55
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
JustUserR Все же IE6 отказывается вставлять стили показанным вами образом.
Хотя, конечно причиной может быть сами сборки (IE-Collection, IE-Tester).
Но хотелось бы решить данную проблему.
Не могли бы вы поэкспериментировать и протестировать приведенные вами примеры?
Я что уже только не делал. (Добавление)
Плюсанул, всеравно спасибо за помощь.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.