我已经写了一小段代码以基于浏览器语言进行重定向,但是如果我使用原始URL,则代码的“其他”部分将无限循环。
我已经对其进行了测试,如果我将其重定向到其他URL时,它就像一个超级按钮一样工作,因此我假设它与尝试将其重定向回原始URL有关,但不确定如何阻止它。 Break / Continue和console.log可以工作,但是前两个是非法的,显然,我不能离开console.log:SI必须告诉if / else语句本质上停止或如果第一个条件为false则“停留在页面上” 。
有人可以告诉我如何解决此问题,以便将浏览器语言设置为法语时,重定向ELSE保留在原始URL上吗?
<!-- language redirect -->
<script>
userLang = navigator.language || navigator.userLanguage;
if (userLang == "fr") {
window.location.href = "http://www.website.com/fr";
}
else {
console.log('null'); *** THIS WORKS but is not right
window.location.href = "http://www.website.com"; *** THIS DOESN'T WORK gets stuck in a loading loop infinitely
window.location.href="http://www.someotherwebsite.com"; ***THIS WORKS but doesn't achieve my purpose
}
</script>
如果浏览器语言是法语,请重定向到法语网站(子目录)ELSE,不执行任何操作,并停留在英语网站上。
答案 0 :(得分:0)
由于此脚本仅将在英语页面中实现,因此您无需为else语句传递任何内容。
userLang = navigator.language || navigator.userLanguage;
if (userLang == "fr") {
window.location.href = "http://www.website.com/fr";
}
对于法语页面,只需将“ fr”更改为“ en”。
答案 1 :(得分:0)
当您将网址分配给window.location.href
属性时,即使将其设置为您当前使用的网址,也会加载指定的网址。如果该语言不是法语,则会导致浏览器不断重新加载您的网站。
来自MDN:
每当将新值分配给位置对象时,都将使用URL加载文档,就像使用修改后的URL调用location.assign()一样。请注意,安全设置(例如CORS)可能会阻止这种情况的发生。
要解决您的问题,当您已经位于用户语言的正确页面上时,请勿设置window.location.href
属性。
答案 2 :(得分:-1)
这只是一个逻辑问题。如果已经在其中,为什么还要重定向到该URL? 只需额外检查一下,是否已经在下面的正确网址中
<script>
userLang = navigator.language || navigator.userLanguage;
if (userLang == "fr" && window.location.href!= "http://www.website.com/fr") {
window.location.href = "http://www.website.com/fr";
}
else {
if(window.location.href != "http://www.website.com") {
window.location.href = "http://www.website.com";
}
}
</script>