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

Jokerrcs

Постоялец
Регистрация
6 Мар 2016
Сообщения
72
Реакции
6
Сайт:
Скрытое содержимое доступно для зарегистрированных пользователей!

Думаю проблема где-то тут
Код:
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 в браузере, то проблемы нет
 

Вложения

  • Домен дубль.png
    Домен дубль.png
    57,8 KB · Просмотры: 3
Сайт:

Думаю проблема где-то тут
Код:
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 в браузере, то проблемы нет

Все элементарно. Если зайти не с Для просмотра ссылки Войди или Зарегистрируйся, а с Для просмотра ссылки Войди или Зарегистрируйся то этот чудный скрипт жестоко обламывается.
Т.к. в url вы ищете подстроку Для просмотра ссылки Войди или Зарегистрируйся, а не Для просмотра ссылки Войди или Зарегистрируйся

Не привязывайтесь к конкретному домену захардкоженному. А извлекайте домен из
window.location.hostname
Вот так:
Код:
var newUrl = 'https://' + window.location.hostname' + '/';

И уберите лишний слеш. Для просмотра ссылки Войди или Зарегистрируйся/ выглядит просто ужасно
Для просмотра ссылки Войди или Зарегистрируйся/ - другое дело
 
Последнее редактирование:
Все элементарно. Если зайти не с Для просмотра ссылки Войди или Зарегистрируйся, а с Для просмотра ссылки Войди или Зарегистрируйся то этот чудный скрипт жестоко обламывается.
Т.к. в url вы ищете подстроку Для просмотра ссылки Войди или Зарегистрируйся, а не Для просмотра ссылки Войди или Зарегистрируйся

Не привязывайтесь к конкретному домену захардкоженному. А извлекайте домен из
window.location.hostname
Вот так:
Код:
var newUrl = 'https://' + window.location.hostname' + '/';

И уберите лишний слеш. Для просмотра ссылки Войди или Зарегистрируйся/ выглядит просто ужасно
Для просмотра ссылки Войди или Зарегистрируйся/ - другое дело
Посмотреть вложение 95828
upload_2018-6-4_9-38-39.png
После того как применил ваше решение на сайте другой косяк вылез. Слайдер с изображениями перестал работать правильно. Можете на сайте посмотреть сами. И важно, что выбор языка не отображается
 
Посмотреть вложение 95828
Посмотреть вложение 95831
После того как применил ваше решение на сайте другой косяк вылез. Слайдер с изображениями перестал работать правильно. Можете на сайте посмотреть сами. И важно, что выбор языка не отображается
Я вообще не понимаю смысл этого джаваскрипта. Вы избирательно показываете селектор языка только пользователями с языком ru? Какой в этом смысл?
 
Я вообще не понимаю смысл этого джаваскрипта. Вы избирательно показываете селектор языка только пользователями с языком ru? Какой в этом смысл?
Нужно чтобы по ссылке Для просмотра ссылки Войди или Зарегистрируйся открывалась русская версия сайта. Тут же перекидывает на английскую. Более того назад вернуться на русскую возможности нет. Кнопки переключения языка не отображаются. У меня сайт работает только в опере без приключений, и то, до того момента, если в файле main.js не вырезать код:
Код:
setupLanguage();
После этого и в опере кнопки перестают отображаться. Я слышал, если нужна нормальная поддержка русской и английской версии сайта. Вроде как js определяет версию сайта и показывает соответствующие кнопки для перехода на другую.
Проблема однозначно в JS, не привязывайтесь к конкретному домену а извлекайте его как написал автор выше
После той правки слайдеры отображаются некорректно и в опере кнопки переключения языка перестают отображаться. Как бы и хер с ней с этой оперой. Если делать, так делать чтобы во всех браузерах сайт работал одинаково правильно. Сейчас вернул все по умолчанию
 

Вложения

  • Кнопки1.png
    Кнопки1.png
    552,6 KB · Просмотры: 2
  • Кнопки2.png
    Кнопки2.png
    920,7 KB · Просмотры: 3
Последнее редактирование:
У меня сайт работает только в опере без приключений
navigator.language только в опере вернет 'ru', в EDGE, хроме, лисе вернет 'ru-RU'... В сафари и прочих - хз - смотрите сами.
Оба условия нужно переписать с "ИЛИ" примерно так:
Код:
if ((locLang !== 'ru' || locLang !== 'ru-RU' ) && url.indexOf("/en") == -1)
if (locLang == 'ru' || locLang == 'ru-RU')
 
Последнее редактирование:
navigator.language только в опере вернет 'ru', в EDGE, хроме, лисе вернет 'ru-RU'... В сафари и прочих - хз - смотрите сами.
Оба условия нужно переписать с "ИЛИ" примерно так:
Код:
if ((locLang !== 'ru' || locLang !== 'ru-RU' ) && url.indexOf("/en") == -1)
if (locLang == 'ru' || locLang == 'ru-RU')
Посмотрите, я правильно внес изенения?
Для просмотра ссылки Войди или Зарегистрируйся
Кнопка появилась. На этом плюсы заканчиваются. Переключение языка работает некорректно
 
Посмотрите, я правильно внес изенения?
Для просмотра ссылки Войди или Зарегистрируйся
Кнопка появилась. На этом плюсы заканчиваются. Переключение языка работает некорректно
Внесли-то правильно... но здесь бред какой-то по самой логике работы или может я чего-то не догоняю...
Выпилите совсем функцию 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;
  }
 
Последнее редактирование:
Внесли-то правильно... но здесь бред какой-то по самой логике работы или может я чего-то не догоняю...
Выпилите совсем функцию 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;
  }
Правильно?
Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху