javascript - 尝试使用 navigator.language 将用户重定向到 /en 时无休止的重定向循环
问题描述
我有一个德语 Wordpress 网站 ( http://website.de ),并使用 TranslatePress ( http://website.de/en )制作了每个页面的英文版本。现在我尝试使用 navigator.language 获取 JQuery 中每个用户的语言,并将非德语用户重定向到 /en:
<script type="text/javascript">
$(document).ready(function(){
var userLang = navigator.language || navigator.userLanguage;
if (userLang == "de") {
window.location = "http://www.website.de";;
}
else {
window.location = "http://www.website.de/en";
}
});
</script>
但这会导致无限循环,并且页面每秒都会重新加载。我能做些什么来避免这种情况?
解决方案
Robin Zigmond 是正确的——如果你在 if 和 else 块中都重定向,它总是会导致无限循环(例外情况除外)。也许试试
<script type="text/javascript">
$(document).ready(function(){
var userLang = navigator.language || navigator.userLanguage;
var isUserOnEnglishVer = window.location.href.indexOf("website.de/en") >=0;
if (userLang == "de" && isUserOnEnglishVer) {
window.location = "http://www.website.de";
}
if (userLang != "de" && !isUserOnEnglishVer){
window.location = "http://www.website.de/en";
}
});
</script>
换句话说,仅当您使用的版本不正确时才重定向。
但是,如果没有内置的语言重定向方式,我会感到惊讶。
推荐阅读
- scala - 对象内的值行为
- javascript - 在呈现页面之前应用随机正文类以避免闪烁?
- python - 如何使用 Python 2.7 从字符串列表中替换部分字符串
- javascript - 避免在过滤器循环中使用多个 indexOf
- css - CSS calc() 与多个单位的乘法
- visual-studio-2017 - CS2012 无法打开 .exe 进行写入 - 访问路径被拒绝
- python - 创建一个 Pandas 散点图,其中一个轴是索引
- c++ - 如何基于 QGraphicScene 缩放/调整 QGraphicsWidget 的大小?
- android - 链接使用 c++_static 构建的两个库
- oauth-2.0 - Identity Server 4:支持密码授予类型的刷新令牌