Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Мелькает белый фон перед загрузкой страницы (https://javascript.ru/forum/misc/71843-melkaet-belyjj-fon-pered-zagruzkojj-stranicy.html)

Nezumi.May 17.12.2017 02:45

Мелькает белый фон перед загрузкой страницы
 
Доброго времени суток!

У меня есть проблема со скриптом, который меняет стили и запоминает выбранный стиль с помощью куки.

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


На другом сайте, где используется тот же скрипт, всё загружается нормально. Почему у меня так?

Сам скрипт:
<link id="jdyncss" rel="StyleSheet" href="/css/des1.css" />


function setjDynCSS(url){
	if(!arguments.length){url=(url=document.cookie.match(/\bjdyncss=([^;]*)/))&&url[1];if(!url)return''}
	document.getElementById('jdyncss').href=url;var d=new Date();d.setFullYear(d.getFullYear()+1);document.cookie=['jdyncss=',url,';expires=',d.toGMTString(),';path=/;'].join('');return url
	}
    setjDynCSS();


И кнопки смены дизайна:
<a href="javascript://" onclick="setjDynCSS('/css/des1.css')">Дизайн #1</a>
<a href="javascript://" onclick="setjDynCSS('/css/des2.css')">Дизайн #2</a>

Aetae 17.12.2017 05:36

Скрипт должен быть в самом верху, сразу после link(а лучше вместо, но переписывать же вы не будете).

Nezumi.May 17.12.2017 12:06

Aetae, Скрипт и так в самом верху, сразу после link.
Пробовала разные варианты, но результат один и тот же.

В head стоит конструкция:

<link id="jdyncss" rel="StyleSheet" href="/css/des1.css" />
<script src="/css/smenadiz.js"></script>
<script src="/.s/src/jquery-1.10.2.js"></script>


Где smenadiz.js - вышеописанный скрипт.

Улучшения в загрузке наступали после того, как я забивала head "лишними скриптами" по типу:
<link id="jdyncss" rel="StyleSheet" href="/css/des1.css" />
<script src="/css/smenadiz.js"></script>
<script src="/.s/src/jquery-1.10.2.js"></script>
<script src="/.s/src/jquery-1.10.2.js"></script>
<script src="/.s/src/jquery-1.10.2.js"></script>
<script src="/.s/src/jquery-1.10.2.js"></script>


Белый фон не появляется даже при Ctrl+F5, но это явно не вариант - забивать мусором head. Такие дела.

Aetae 18.12.2017 05:23

Странно всё это. Попробуйте подключить этот вариант скрипта вместо вашего. (<link ... надо убрать вообще).

.
(function(url){
  document.write('<link id="jdyncss" rel="stylesheet" href="' + (url && url[1] || '/css/des1.css') + '" />');
})(document.cookie.match(/\bjdyncss=([^;]*)/));

function setjDynCSS(url) {
  if (!url) {
    url = (url = document.cookie.match(/\bjdyncss=([^;]*)/)) && url[1];    
    if (!url) return ''
  }
  document.getElementById('jdyncss').href = url;
  var d = new Date();
  d.setFullYear(d.getFullYear() + 1);
  document.cookie = 'jdyncss='
    + url
    + ';expires='
    + d.toGMTString()
    + ';path=/;';
  return url
}

Если не поможет - попробуйте убрать другие скрипты на странице.

Nezumi.May 24.12.2017 01:11

Цитата:

Сообщение от Aetae (Сообщение 473138)
Странно всё это. Попробуйте подключить этот вариант скрипта вместо вашего. (<link ... надо убрать вообще).
...
Если не поможет - попробуйте убрать другие скрипты на странице.

Большое спасибо! Помогло. Ничего не мелькает.

Что касательно "убрать другие скрипты" - я их все убирала, меняла местами, сокращала, добавляла другие, но ничего не помогало. Зато на другом сайте всё работает легко и просто, хотя там напичкано в два раза больше скриптов.


Часовой пояс GMT +3, время: 00:50.