Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2018, 08:54
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2018, 09:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Если есть 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);
        });

    });
})();
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2018, 09:46
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Сообщение от Nexus Посмотреть сообщение
как узнать, когда страница готова для показа?
На смену языка приходится 0.5-2s, даже при слабом соединении. На это время можно добавить заглушку, т.е. активация в момент нажатия на кнопку + 2s длительности (при клике по одной из двух). И все же, хотелось бы настроить куки. Каждый раз переключать, пользователям будет не удобно.
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2018, 09:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от madeas
На смену языка приходится 0.5-2s, даже при слабом соединении.
От чего это время зависит? Для чего требуется столько времени?
Заглушку я добавил, осталось css ей определить.
Сообщение от madeas
И все же, хотелось бы настроить куки. Каждый раз переключать, пользователям будет не удобно.
Что значит "настроить куки"?
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2018, 10:07
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Что-то не получается. Надо же заменить полностью скрипт на ваш? Если да, то при замене на скрипт выше, кнопки вовсе перестают работать. А время ни от чего не зависит. Нужно просто отталкиваться от момента "клика" по кнопке. В этот момент окно не перезагружается, просто происходит скрытие/появление блоков, в зависимости от языка. Попробуйте попереключать на сайте, вы поймете о чем речь.

Надо починить скрипт, добавить запоминание пользовательского выбора языка. Знать бы только как это сделать.
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2018, 11:12
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от madeas
Что-то не получается. Надо же заменить полностью скрипт на ваш?
Да.
Сообщение от madeas
Надо же заменить полностью скрипт на ваш? Если да, то при замене на скрипт выше, кнопки вовсе перестают работать
Консоль смотрели?
Сообщение от madeas
Надо починить скрипт, добавить запоминание пользовательского выбора языка.
madeas.github.io - это же ваш сайт, я правильно понимаю?
Там указано, что вы - Frontend developer
Почему у вас столько тривиальная задача вызывает такие сложности?
Кука у вас уже записывается, осталось только прочитать сохраненное значение и кликнуть на нужную кнопку.
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2018, 11:46
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Сообщение от Nexus Посмотреть сообщение
Консоль смотрели?
Не понял. Какую?)
Сообщение от Nexus Посмотреть сообщение
Почему у вас столько тривиальная задача вызывает такие сложности?
Наверное, потому что пока не сталкивался с такой задачей. Если бы мог решить сам, логично предположить, что не стал бы здесь спрашивать.
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2018, 11:54
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от madeas
Не понял. Какую?)
Frontend developer и про консоль не слышал, чудеса
Почитайте: https://learn.javascript.ru/debugging-chrome
Ответить с цитированием
  #9 (permalink)  
Старый 09.06.2018, 11:54
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Консоль - понятие растяжимое)
Кажется и так разобрался.

Последний раз редактировалось madeas, 09.06.2018 в 11:57.
Ответить с цитированием
  #10 (permalink)  
Старый 09.06.2018, 11:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от madeas
Так вы уточняйте про какую) Их, как бы, много)
Какую консоль кроме той, что в devTools еще можно использовать для отладки?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прелоадер только при входе на сайт karakym Общие вопросы Javascript 3 21.03.2016 22:44
CSS3 Анимация [Не срабатывает при переключении вкладки] Quasar[CY] (X)HTML/CSS 1 18.11.2015 20:43
Почему скрипт отрабатывает в IE только при первом входе на сайт? tygeddar Элементы интерфейса 3 20.09.2012 01:37
Jquery UI Tabs плодятся блоки при переключении между вкладками. Arey jQuery 12 05.09.2012 21:57
Подружить два скрипта (скроллер+скрипт эффекта при наведении) Che jQuery 26 29.08.2012 10:59