如何将用户重定向到不同的页面?

时间:2015-10-05 09:48:36

标签: javascript jquery

我需要根据浏览器的语言将用户重定向到另一个页面。例如:如果浏览器的语言english重定向到site.com/en/

我尝试这样做:

$(document).ready(function () {
    var userLang = navigator.language || navigator.userLanguage;

    switch (userLang) {
        case 'en':
            window.location.href = window.location.origin + '/en';
            break;
        case 'de':
            window.location.href = window.location.origin + '/de';
            break;
        default:
            break;
    }
});

它的工作原理但页面不断重新加载。如何解决或提示另一种解决方案?

4 个答案:

答案 0 :(得分:4)

由于您没有检查用户是否已经在正确的语言网站上,因此页面会不断重新加载。

在您的页面上,您可以为服务器端生成的页面语言存储javascript变量。例如:

var thisLanguage = 'en';

然后更改您的javascript逻辑以将此考虑在内,并且仅在用户的语言与thisLanguage不同时才应用重定向:

$(document).ready(function () {
    var userLang = navigator.language || navigator.userLanguage;

    if (userLang != thisLanguage){

       switch (userLang) {
           case 'en':
               window.location.href = window.location.origin + '/en';
               break;
           case 'de':
               window.location.href = window.location.origin + '/de';
               break;
           default:
               break;
       }

    }
});

答案 1 :(得分:0)

我认为你应该通过从URL中读取语言来检测语言,因为你想将用户重定向到适当的URL:

$(document).ready(function () {

    var languageSuffix = window.location.pathname;
    if(languageSuffix !== '/') {
        return;
    }

    var userLang = navigator.language || navigator.userLanguage;

    switch (languageSuffix) {
        case '/en':
            window.location.href = window.location.origin + '/en';
            break;
        case '/de':
            window.location.href = window.location.origin + '/de';
            break;
       default:
            break;
    }
});

答案 2 :(得分:0)

我们可以检查网址是否与当前网址相同:

$(document).ready(function () {
    var userLang = navigator.language || navigator.userLanguage;
    var urlToRedirect = '';

    switch (userLang) {
        case 'en':
            urlToRedirect = window.location.origin + '/en';
            break;
        case 'de':
            urlToRedirect = window.location.origin + '/de';
            break;
        default:
            break;
    }
    if(urlToRedirect!=='' && urlToRedirect!==window.location.href){
       window.location.href = urlToRedirect;
    }
});

答案 3 :(得分:0)

尝试以下内容:

$(document).ready(function () {
    var url = $(location).attr('href');
    var userLang = navigator.language || navigator.userLanguage;

    if(url.indexOf("/en") == -1 && userLang == 'en') {
        window.location.href = window.location.origin + '/en';
    } else if (url.indexOf("/de") == -1 && userLang == 'de'){
        window.location.href = window.location.origin + '/de';
    } else {
        // Do nothing
    }
});