Javascript 基于浏览器语言的JS重定向,如果。。。其他';语句无限循环

Javascript 基于浏览器语言的JS重定向,如果。。。其他';语句无限循环,javascript,Javascript,我已经编写了一小段基于浏览器语言重定向的代码,但是如果我使用原始URL,代码的“else”部分将无限循环 我已经测试过,如果我重定向到一个不同的URL,它会像一个符咒一样工作,所以我假设它与试图将它重定向回原始URL有关,但不确定如何停止。Break/Continue和console.log可以工作,但前两个是非法的,显然我不能离开console.log in:S如果第一个条件为false,我需要告诉if/else语句基本停止或“停留在页面上” 有人能告诉我如何解决这个问题吗?这样,如果浏览器语

我已经编写了一小段基于浏览器语言重定向的代码,但是如果我使用原始URL,代码的“else”部分将无限循环

我已经测试过,如果我重定向到一个不同的URL,它会像一个符咒一样工作,所以我假设它与试图将它重定向回原始URL有关,但不确定如何停止。Break/Continue和console.log可以工作,但前两个是非法的,显然我不能离开console.log in:S如果第一个条件为false,我需要告诉if/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>

userLang=navigator.language | | navigator.userLanguage;
如果(userLang==“fr”){
window.location.href=”http://www.website.com/fr";
}
否则{
console.log('null');***这可以工作,但不正确
window.location.href=”http://www.website.com“;***这不起作用,会无限地卡在加载循环中
window.location.href=”http://www.someotherwebsite.com“;***这很有效,但没有达到我的目的
}

如果浏览器语言为法语,请重定向到法语网站(子目录),否则不执行任何操作并停留在英语网站上。

由于此脚本仅在英语页面中实现,因此不需要为ELSE语句传递任何内容

userLang = navigator.language || navigator.userLanguage;

if (userLang == "fr") {
    window.location.href = "http://www.website.com/fr";
}

对于法语页面,您只需将“fr”更改为“en”

这只是一个合乎逻辑的问题。如果url已经存在,为什么要重定向到url? 只需额外检查一下,它是否已经在正确的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>

userLang=navigator.language | | navigator.userLanguage;
如果(userLang==“fr”&&window.location.href!“http://www.website.com/fr") {
window.location.href=”http://www.website.com/fr";
}
否则{
如果(window.location.href!“http://www.website.com") {
window.location.href=”http://www.website.com";
}
}

将url分配给
window.location.href
属性时,即使指定的url设置为当前所在的url,也会加载该url。这会导致浏览器不断地重新加载您的网站(如果语言不是法语)

发件人:

每当向location对象分配新值时,都会使用URL加载文档,就好像location.assign()是用修改后的URL调用的一样。请注意,安全设置(如CORS)可能会有效地防止这种情况发生


要解决您的问题,当您已经在用户语言的正确页面上时,不应设置
window.location.href
属性。

您在英文和法文页面上都实现了相同的脚本吗?或者,该代码是否只在英文页面上实现?它只在英文页面上实现。如果浏览器不是法语,法语网站上会有一个类似的脚本,基本上重定向到英语页面。我也想到了这一点,但它没有解决循环问题。虽然这是功能性的,但这是多余的,因为脚本将只放在英语页面中。谢谢!我怀疑这就是问题所在。我将脚本更改为一个简单的“if”语句,并删除了“else”条件,但我想知道这是否有任何风险,或者不是最佳做法。我觉得它应该返回一些东西,但如果我只是返回null或类似的东西,也会觉得多余……删除else语句是正确的!最好的做法是消除代码中的任何冗余内容,使其更具可读性。