В URL дублируется домен

Тема в разделе "JavaScript", создана пользователем Jokerrcs, 3 июн 2018.

  1. Jokerrcs

    Jokerrcs Постоялец

    Регистр.:
    6 мар 2016
    Сообщения:
    56
    Симпатии:
    4
    Сайт:

    Думаю проблема где-то тут
    Код:
    function setupLanguage() {
        var locLang = (navigator.language) ? navigator.language : navigator.userLanguage;
        var url = window.location.href;
        var newUrl = 'https://boostinghouse.com/';
       
        if (locLang !== 'ru' && url.indexOf("/en") == -1) {
            var subUrl = url.replace(newUrl, '');
            newUrl += '/en/' + subUrl;
            window.location.href = newUrl;
        }
        if (locLang == 'ru') {
            $('.lang-switch').css('visibility', 'visible');
            $('#lang-flag, #lang-ru, #lang-toggle').show();
        }
    }
    Файл

    Если отключить js в браузере, то проблемы нет
     

    Вложения:

  2. velwind

    velwind Создатель

    Регистр.:
    25 май 2018
    Сообщения:
    26
    Симпатии:
    7
    Все элементарно. Если зайти не с https://boostinghouse.com/, а с https://www.boostinghouse.com/ то этот чудный скрипт жестоко обламывается.
    Т.к. в url вы ищете подстроку https://boostinghouse.com/, а не https://www.boostinghouse.com/

    Не привязывайтесь к конкретному домену захардкоженному. А извлекайте домен из
    window.location.hostname
    Вот так:
    Код:
    var newUrl = 'https://' + window.location.hostname' + '/';
    
    И уберите лишний слеш. http://boostinghouse.com//en/ выглядит просто ужасно
    http://boostinghouse.com/en/ - другое дело
     
    Последнее редактирование: 3 июн 2018
  3. Jokerrcs

    Jokerrcs Постоялец

    Регистр.:
    6 мар 2016
    Сообщения:
    56
    Симпатии:
    4
    Посмотреть вложение 95828
    upload_2018-6-4_9-38-39.png
    После того как применил ваше решение на сайте другой косяк вылез. Слайдер с изображениями перестал работать правильно. Можете на сайте посмотреть сами. И важно, что выбор языка не отображается
     
  4. velwind

    velwind Создатель

    Регистр.:
    25 май 2018
    Сообщения:
    26
    Симпатии:
    7
    Я вообще не понимаю смысл этого джаваскрипта. Вы избирательно показываете селектор языка только пользователями с языком ru? Какой в этом смысл?
     
  5. Jokerrcs

    Jokerrcs Постоялец

    Регистр.:
    6 мар 2016
    Сообщения:
    56
    Симпатии:
    4
    Нужно чтобы по ссылке https://boostinghouse.com/ открывалась русская версия сайта. Тут же перекидывает на английскую. Более того назад вернуться на русскую возможности нет. Кнопки переключения языка не отображаются. У меня сайт работает только в опере без приключений, и то, до того момента, если в файле main.js не вырезать код:
    Код:
    setupLanguage();
    После этого и в опере кнопки перестают отображаться. Я слышал, если нужна нормальная поддержка русской и английской версии сайта. Вроде как js определяет версию сайта и показывает соответствующие кнопки для перехода на другую.
    После той правки слайдеры отображаются некорректно и в опере кнопки переключения языка перестают отображаться. Как бы и хер с ней с этой оперой. Если делать, так делать чтобы во всех браузерах сайт работал одинаково правильно. Сейчас вернул все по умолчанию
     

    Вложения:

    Последнее редактирование: 4 июн 2018
  6. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    480
    Симпатии:
    320
    navigator.language только в опере вернет 'ru', в EDGE, хроме, лисе вернет 'ru-RU'... В сафари и прочих - хз - смотрите сами.
    Оба условия нужно переписать с "ИЛИ" примерно так:
    Код:
    if ((locLang !== 'ru' || locLang !== 'ru-RU' ) && url.indexOf("/en") == -1)
    if (locLang == 'ru' || locLang == 'ru-RU')
     
    Последнее редактирование: 4 июн 2018
    Jokerrcs нравится это.
  7. Jokerrcs

    Jokerrcs Постоялец

    Регистр.:
    6 мар 2016
    Сообщения:
    56
    Симпатии:
    4
    Посмотрите, я правильно внес изенения?
    https://boostinghouse.com/js/main.js
    Кнопка появилась. На этом плюсы заканчиваются. Переключение языка работает некорректно
     
  8. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    480
    Симпатии:
    320
    Внесли-то правильно... но здесь бред какой-то по самой логике работы или может я чего-то не догоняю...
    Выпилите совсем функцию setupLanguage
    попробуйте так:
    HTML:
      $('.lang-switch__var__label, .lang-switch__var__flag, #lang-toggle').on('click', function(){
         if(location.pathname.indexOf('/en/') == -1){
           location.pathname = '/en'+location.pathname;
         } else {
           location.pathname = location.pathname.replace('/en/','/');
         }
        return false;
      });
      if(navigator.language.indexOf('ru') > -1){
         $('.lang-switch').css('visibility', 'visible');
         $('#lang-flag, #lang-ru, #lang-toggle').show();
      } else if(location.pathname.indexOf('/en/') == -1) {
         location.pathname = '/en'+location.pathname;
      }
    
     
    Последнее редактирование: 4 июн 2018
    Jokerrcs нравится это.
  9. Jokerrcs

    Jokerrcs Постоялец

    Регистр.:
    6 мар 2016
    Сообщения:
    56
    Симпатии:
    4
    Правильно?
    https://boostinghouse.com/js/main.js
     
  10. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    480
    Симпатии:
    320
    Неправильно.
    setupLanguage(); надо удалить.
     
    Jokerrcs нравится это.