javascript - window.location.replace 有时不运行

标签 javascript jquery

我设置了一个 Bootstrap Dropdown,我可以在其中获取将我的网站翻译成的语言,附加 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;
  }
}

最佳答案

尝试使用

window.open(new_url,"_self")

location.href = new_url

关于javascript - window.location.replace 有时不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58714676/

相关文章:

javascript - 如何将带双引号的转义 c# 字符串转换为带双引号的转义 javascript 字符串

构造函数的 JavaScript prototype.constructor 属性不在规范中?

javascript - 循环通过 Jquery 上的类来制作动画

jquery - jQuery 数据表中带有超链接的图像未显示

jquery - 似乎无法让 jquery resize 事件在 Modernizr 媒体查询功能上工作

javascript - 如何使用 jQuery 更改多个元素的样式?

javascript - Angular Material 2 选项卡动态内容

javascript - 将 <div> 放在 React 中的 x,y 坐标处

jquery - 使灯箱居中 - 主要是

使用事件属性与使用元素 id 的 Javascript 性能