我设置了一个 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/