иногда не запускается window.location.replace - PullRequest
0 голосов
/ 05 ноября 2019

Я установил выпадающий список Bootstrap, где я получаю язык для перевода моего сайта, добавьте URL-адрес и затем перезагрузите страницу.

Кажется, что он работает нормально для первого набора переводов, например en |es, но если я пойду, чтобы сбросить его обратно или изменить на другой язык, он просто не перезагружается. Не слишком уверен, почему, надеясь, что кто-то может помочь. Или предоставить альтернативный способ сделать это?

Я подозреваю, что это как-то связано с извлечением URL?

<div class="dropdown translate__dropdown d-inline-block">
  <a class="dropdown-toggle chosen__language" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    <img src="http://mastersite.loc/assets/images/flags/fr.png" alt="en">
  </a>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
    <a data-value="en|en" data-lang="en" class="dropdown-item language__select" href="#">
      <img src="http://mastersite.loc/assets/images/flags/en.png" alt="en">
    </a>
    <a data-value="en|fr" data-lang="fr" class="dropdown-item language__select" href="#">
      <img src="http://mastersite.loc/assets/images/flags/fr.png" alt="fr">
    </a>
    <a data-value="en|es" data-lang="es" class="dropdown-item language__select" href="#">
      <img src="http://mastersite.loc/assets/images/flags/es.png" alt="es">
    </a>
  </div>
</div>
// Language Settings....
if ($(".language__select").length) {
  $('.language__select').on('click', function() {
    var url = stripUrl(window.location.href);
    var value = $(this).data('value');
    var new_url = url + '?/#googtrans(' + value + ')';
    var language = $(this).data('lang');
    var token = $('meta[name="csrf-token"]').attr('content');

    // Send Ajax Call To Change Lang...
    $.ajax({
      type: 'POST',
      url: '/set-language',
      data: {
        language: language,
        _token: token
      },
      success: function() {
        // Now Reload page using New URL...
        setTimeout(function() {
          window.location.replace(new_url);
        }, 1000)
      }
    })
    return false;
  })

  function stripUrl(urlToStrip) {
    let stripped = urlToStrip.split('?')[0];
    stripped = stripped.split('&')[0];
    stripped = stripped.split('#')[0];
    return stripped;
  }
}

1 Ответ

0 голосов
/ 05 ноября 2019

Попробуйте использовать

window.open(new_url,"_self")

или

location.href = new_url
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...