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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Или к тем кто знает как решить мою проблему.
DeepVarvar Супермодератор
Отправлено: 23 Апреля, 2012 - 12:20:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Собственно имеется страница, на которой нужно вставить стиль динамически.
Естественно во всех браузерах все работает.
Но вот IE...

Я конечно знаю что в IE ниже 8-го тег STYLE может быть только readonly.
Я хотел бы узнать существует ли хак на все это дело для IE 6.
Седьмой я победил так:
CODE (javascript):
скопировать код в буфер обмена
  1. function placeStyle(styles) {
  2.   var i, link, head = document.getElementsByTagName("head")[0];
  3.   for (i in styles) {
  4.     link = document.createElement("link");
  5.     link.type = "text/css";
  6.     link.rel = "stylesheet";
  7.     link.href = "http://example.com/styles/" + styles[i].link;
  8.     head.appendChild(link);
  9.   }
  10. }

Шестой же с этим кодом просто показывает черный экран.

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

Очень ваша нужна помощь.

(Отредактировано автором: 23 Апреля, 2012 - 15:38:02)

 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Апреля, 2012 - 16:50:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




У меня уже мозг опух Радость

Еще кто-нибудь знает как хакнуть шестого осла?
 
 Top
JustUserR
Отправлено: 17 Мая, 2012 - 11:55:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 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.
CODE (htmlphp):
скопировать код в буфер обмена
  1. var ss1 = document.createElement('style');
  2. var def = 'body {color: red;}';
  3. ss1.setAttribute("type", "text/css");
  4. ss1.styleSheet.cssText = def;
  5. var hh1 = document.getElementsByTagName('head')[0];
  6. 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:
CODE (htmlphp):
скопировать код в буфер обмена
  1. var ss1 = document.createElement('style');
  2. var def = 'body {color: red;}';
  3. ss1.setAttribute("type", "text/css");
  4. var hh1 = document.getElementsByTagName('head')[0];
  5. hh1.appendChild(ss1);
  6. if (ss1.styleSheet) {   // IE
  7.     ss1.styleSheet.cssText = def;
  8. } else {                // the world
  9.     var tt1 = document.createTextNode(def);
  10.     ss1.appendChild(tt1);
  11. }
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-элементов

(Отредактировано автором: 17 Мая, 2012 - 11:55:50)



-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июня, 2012 - 15:36:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




JustUserR Все же IE6 отказывается вставлять стили показанным вами образом.
Хотя, конечно причиной может быть сами сборки (IE-Collection, IE-Tester).
Но хотелось бы решить данную проблему.
Не могли бы вы поэкспериментировать и протестировать приведенные вами примеры?
Я что уже только не делал.
(Добавление)
Плюсанул, всеравно спасибо за помощь.
 
 Top
LIME
Отправлено: 01 Июня, 2012 - 15:47:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)





DeepVarvar мазохист
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июня, 2012 - 15:49:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Нет не мазохист - есть соответствующее ТЗ.
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2012 - 17:33:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DeepVarvar пишет:
Все же IE6 отказывается вставлять стили показанным вами образом
Итак, я решил эту проблему...
Кто же знал что искать надо немного в другом месте.
Собственно IE6 стили вставлял, но не применял.

Оказалось он не понимает имена ID с префиксом из нижнего подчеркивания вида: #__test

Более того самое интересное IE7 понимает и принимает такие написания,
а вот IE8 ведет себя в данном случае так же как и IE6 Радость

Госспаде, какие же идиоты эти индусы...
 
 Top
DlTA
Отправлено: 04 Июня, 2012 - 19:05:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




DeepVarvar пишет:
Оказалось он не понимает имена ID с префиксом из нижнего подчеркивания вида: #__test
а как к этому пришел?
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2012 - 20:11:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Установил консоль и девелопера в IE, там просматривая сгенерированный css увидел что на месте ID пишет UNDEFINED
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB