powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jquery ie8 прорисовка
3 сообщений из 3, страница 1 из 1
jquery ie8 прорисовка
    #38583442
amakarevskij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, долго и упорно мучил поисковые системы да так и не домучил :) - можно ли что-нибудь поделать с прорисовкой браузером IE8 при загрузке страницы с jquery:

Суть явления в том, что вначале загрузки пользователь видит исходную версию страницы с обычными "нестилизованными" select-ами, и лишь через секунду (после выполнения ${.combobox).combobox()); пользователю отображается нормальная страница с виджетами jquery.

Все браузеры кроме IE честно ждут при прорисовке выполнения JQuery (либо настолько быстро его выполняют, что глазами не заметить), даже в IE9+ прорисовка почти мгновенная, но по ТЗ необходима поддержка IE8 и в нём загрузка страницы совсем не красива.

Как можно убрать эту раздражающую прорисовку?
Можно как-нибудь заставить IE8 не отображать страницу, пока не выполнится jquery?
...
Рейтинг: 0 / 0
jquery ie8 прорисовка
    #38583460
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В IE8 нет события DOMContentLoaded, вместо него используется хак или скрипт располагается в конце html-кода.
Видимо поэтому IE8 начинает рендерить страницу раньше, чем хотелось-бы, плюс он тормозной по сравнению с современными браузерами.

Возможно, стоит попробовать такой вариант:
в разделе head (или в разделе body как можно раньше) присваивать для родительского контейнера стиль типа display:none или visibility:hidden
По готовности страницы, первым делом восстанавливать стиль по-умолчанию (например в самом начале функции для .ready() )
Лучше делать скриптом, потому что в стартовом CSS невидимый блок очень плохо для поисковиков.

Вот например, кроссбраузерный скрипт для смены CSS ( #myMainContainer { display:none } ),
но наверное можно это сделать и с помощью jQuery (только не вздумайте ложить эту стартовую часть в ready() :)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script type="text/javascript">
(function() {
 var s,c;
 if (!document.addEventListener && document.attachEvent) {
   s=document.createElement('style'); s.setAttribute("type", "text/css"); c='#myMainContainer { display:none }';
   if (s.styleSheet) s.styleSheet.cssText=c; else { c=document.createTextNode(c); s.appendChild(c); }
   document.getElementsByTagName("head")[0].appendChild(s);
 }
}());
</script>


P.S. работу скрипта не проверял, но вроде должно работать.
...
Рейтинг: 0 / 0
jquery ie8 прорисовка
    #38584453
amakarevskij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asws,
большое спасибо за идею, помогло:)

единственное, присвоение скриптом не сработало - всё равно ie8 тупит - но поскольку у меня приложение для корпоративной сети и то что плохо для поисковиков для меня не столь важно, то вот такая простая конструкция избавила меня от указанных проблем

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 .NoShow
      {
          display : none;
      }

...
<body>
 <div id="myMainContainer" class="NoShow">
...
 </div>
 </body>

<script type="text/javascript">
    $(document).ready(function () { $("#myMainContainer").removeClass("NoShow"); });
</script>
</html>
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jquery ie8 прорисовка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]