Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2017, 02:45
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

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

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

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


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

Сам скрипт:
<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>

Последний раз редактировалось Nezumi.May, 17.12.2017 в 02:47.
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2017, 05:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,580

Скрипт должен быть в самом верху, сразу после link(а лучше вместо, но переписывать же вы не будете).
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 17.12.2017, 12:06
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

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. Такие дела.
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2017, 05:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,580

Странно всё это. Попробуйте подключить этот вариант скрипта вместо вашего. (<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
}

Если не поможет - попробуйте убрать другие скрипты на странице.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 24.12.2017, 01:11
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка изображений перед загрузкой KupueIIIKo Общие вопросы Javascript 30 02.10.2013 23:52
jquery перед загрузкой библиотеки Toki Общие вопросы Javascript 12 11.08.2013 18:12
Проблема с загрузкой страницы с помощью load и slideUp slideDown qew4 AJAX и COMET 0 16.09.2012 13:37
Белый фон лучше? Илья Кантор Сайт Javascript.ru 9 04.01.2011 00:21
Как сделать фон, главной страницы на изображении ? asked86 (X)HTML/CSS 3 03.04.2009 02:54