 
			
				09.06.2018, 08:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.04.2018 
					
					
					
						Сообщений: 232
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Заглушка на сайт при переключении
			 
			
		
		
		
		Здравствуйте! 
У меня есть идея, но я не совсем понимаю как ее реализовать. 
 Пояснение
У меня есть  сайт, который имеет переключатель на рус/англ язык. В скрипте переключателя есть куки, но они почему-то не работают. Размер шрифта и сам шрифт у языковых версий разный, соответственно, при переключении происходит визуальный "сдвиг" некоторых элементов сайта. 
 Задача
Мне нужна помощь, чтобы починить куки и добавить "заглушку" в момент переключения. Что-то вроде прелоадера на пару секунд, например, в виде белого фона, чтобы контент успел подгрузиться как надо и пользователь не видел этих сдвигов. Можно создать svg на весь экран или на каждый контейнер, но я пока не разобрался как это работает.
 
Вот сам скрипт:
 
(function() {
        var body = document.getElementsByTagName('body')[0];
        var switcherEN = document.getElementById('switcher-en');
        var switcherRU = document.getElementById('switcher-ru');
        // Заранее считаем срок хранения кук
        var expires = new Date();
        expires.setDate(expires.getDate() + 366);
        expires.toUTCString();
        // Русский и английский заголовки
        var titleEN = document.getElementById('title-en');
        var titleRU = document.getElementById('title-ru');
        var title = {
          en: titleEN.getAttribute('content'),
          ru: titleRU.getAttribute('content')
        }
        var switchLang = function() {
          var lang = this.id
          lang = lang.replace('switcher-', '');
          // Меняем класс для BODY
          body.className = lang;
          // Записываем куки
          document.cookie = [
            'aplang=' + lang, '; expires=' + expires // используем expires, max-age не поддерживается в ИЕ
            , '; path=/', '; domain=' + document.location.host
          ].join('');
          document.title = title[lang];
        }
        switcherEN.onclick = switchLang;
        switcherRU.onclick = switchLang;
      })();
jQuery на сайте
 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
 
Я конечно понимаю, что это всего лишь заморочка, но хочется, чтобы продукт и сайт были качественными.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось madeas, 09.06.2018 в 09:10.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 09:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Если есть jq, то и используйте его, зачем грузить под 100кб, если они не используются? 
У вас в этом скрипте ничего не подгружается, как узнать, когда страница готова для показа?
 
(function() {
    $('#switcher-en,#switcher-ru').click(function() {
        const lang = this.id.toString().split('-').pop();
        let expires = new Date();
        expires = expires.setDate(expires.getDate() + 366).toUTCString();
        $('<div/>').attr({
            opacity: 0,
            'class': 'loader-layout'
        }).html(
            'Загрузка...'
        ).fadeIn(300, function() {
            document.body.className = lang;
            document.cookie = [
                'aplang=' + lang,
                'expires=' + expires, // используем expires, max-age не поддерживается в ИЕ
                'path=/',
                'domain=' + document.location.host
            ].join('; ');
            document.title = $('#title-' + lang).attr('content');
            setTimeout(function(that) {
                $(that).fadeOut(300, function() {
                    this.parentNode.removeChild(this);
                });
            }, 2000, this);
        });
    });
})();
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 09:46
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.04.2018 
					
					
					
						Сообщений: 232
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Nexus
			 
		
	 | 
 
	| 
		как узнать, когда страница готова для показа?
	 | 
 
	
 
 На смену языка приходится 0.5-2s, даже при слабом соединении. На это время можно добавить заглушку, т.е. активация в момент нажатия на кнопку + 2s длительности (при клике по одной из двух). И все же, хотелось бы настроить куки. Каждый раз переключать, пользователям будет не удобно.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 09:57
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от madeas
			
		
	 | 
 
	| 
		На смену языка приходится 0.5-2s, даже при слабом соединении.
	 | 
 
	
 
 От чего это время зависит? Для чего требуется столько времени? 
Заглушку я добавил, осталось css ей определить.
 
	
 
	| 
		
			Сообщение от madeas
			
		
	 | 
 
	| 
		И все же, хотелось бы настроить куки. Каждый раз переключать, пользователям будет не удобно.
	 | 
 
	
 
 Что значит "настроить куки"?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 10:07
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.04.2018 
					
					
					
						Сообщений: 232
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Что-то не получается. Надо же заменить полностью скрипт на ваш? Если да, то при замене на скрипт выше, кнопки вовсе перестают работать. А время ни от чего не зависит. Нужно просто отталкиваться от момента "клика" по кнопке. В этот момент окно не перезагружается, просто происходит скрытие/появление блоков, в зависимости от языка. Попробуйте попереключать на сайте, вы поймете о чем речь.  
 
Надо починить скрипт, добавить запоминание пользовательского выбора языка. Знать бы только как это сделать. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 11:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от madeas
			
		
	 | 
 
	| 
		Что-то не получается. Надо же заменить полностью скрипт на ваш?
	 | 
 
	
 
 Да.
 
	
 
	| 
		
			Сообщение от madeas
			
		
	 | 
 
	| 
		Надо же заменить полностью скрипт на ваш? Если да, то при замене на скрипт выше, кнопки вовсе перестают работать
	 | 
 
	
 
 Консоль смотрели?
 
	
 
	| 
		
			Сообщение от madeas
			
		
	 | 
 
	| 
		Надо починить скрипт, добавить запоминание пользовательского выбора языка.
	 | 
 
	
 
 madeas.github.io - это же ваш сайт, я правильно понимаю?  
Там указано, что вы - Frontend developer   
Почему у вас столько тривиальная задача вызывает такие сложности? 
Кука у вас уже записывается, осталось только прочитать сохраненное значение и кликнуть на нужную кнопку.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 11:46
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.04.2018 
					
					
					
						Сообщений: 232
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Nexus
			 
		
	 | 
 
	| 
		Консоль смотрели?
	 | 
 
	
 
 Не понял. Какую?)
 
	
 
	
		
			Сообщение от Nexus
			 
		
	 | 
 
	| 
		Почему у вас столько тривиальная задача вызывает такие сложности?
	 | 
 
	
 
 Наверное, потому что пока не сталкивался с такой задачей. Если бы мог решить сам, логично предположить, что не стал бы здесь спрашивать.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 11:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.04.2018 
					
					
					
						Сообщений: 232
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Консоль - понятие растяжимое) 
Кажется и так разобрался. 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось madeas, 09.06.2018 в 11:57.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.06.2018, 11:57
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от madeas
			
		
	 | 
 
	| 
		Так вы уточняйте про какую) Их, как бы, много)
	 | 
 
	
 
 Какую консоль кроме той, что в devTools еще можно использовать для отладки?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |