javascript - 使用 javascript 检测语言并重定向到另一个页面

标签 javascript html redirect

我需要当用户打开我的网站时,他检测到语言并将其重定向到浏览器的语言。我正在尝试此操作,但它进入循环并且页面不断加载。希望您能帮忙。

window.onload = function() {

  var ln = window.navigator.language||navigator.browserLanguage;

  if(ln == 'en'){

    window.location.href = 'index_en.html';

  }else if(ln == 'es'){

    window.location.href = 'index_es.html'; 

  }else{

    window.location.href = 'index_es.html'; 

  }

}

最佳答案

在重定向之前设置 cookie。然后在下次重新加载时,cookie 将具有一个值,您可以使用“return”停止脚本

window.onload = function() {

    var ln = window.navigator.language||navigator.browserLanguage;
    var myApp = {}

    /**
     * Gets cookie value by name
     * @param  {string} name Name of cookie to retrieve
     * @return {string}      Value of cookie if found
     */
    myApp.ReadCookie = function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    };

    /**
    * Removes cookie value
    * @param  {string} name Name of cookie
    */
    myApp.EraseCookie = function(name) {
        if ( myApp.ReadCookie(name) )
        document.cookie = name+'=';
        console.log(name+' erased.');
    };

    /**
    * Deletes cookie reference
    * @param  {string} name Name of cookie
    */
    myApp.DeleteCookie = function(name) {
        document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
        console.log(name+' deleted.');
    };

    /**
    * Set cookie value
    * @param  {string} name Name of cookie
    */
    myApp.SetCookie = function(name, value, expires) {

        var cookiestring = [[name, '=', encodeURIComponent( value )].join('')];
        var expire_time = '';

        if ( expires ) {
            expire_time = new Date();
            expire_time.setTime( expire_time.getTime() + expires );
            expire_time = expire_time.toGMTString();
            cookiestring.push( ['expires=', expire_time ].join('') );
        }
        cookiestring = cookiestring.join(';')+';';
        document.cookie = cookiestring;
        console.log( 'SetCookie: '+ name +' set to "'+ value +'"', 'Expires?', expire_time );
    };

    if(myApp.ReadCookie('lang_redirect')) {
        return;
    }

    myApp.SetCookie('lang_redirect', ln);

    if(ln == 'en'){
        window.location.href = 'index_en.html';
    }else if(ln == 'es'){
        window.location.href = 'index_es.html'; 
    } else{
        window.location.href = 'index_es.html'; 
    }

}

关于javascript - 使用 javascript 检测语言并重定向到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53468548/

相关文章:

javascript - Google Analytics(分析)中的直接流量到底由什么构成?

php - 如何在php中动态创建一个不存在的页面

redirect - DNS Gurus : How to forward www. domain.com 到 domain.com 仅使用 DNS?

javascript - Nodejs - 使电子邮件模板动态化

html - 如何用左尖括号 'pre' 解决 '<' 标签的问题?

html - 当我将鼠标悬停在图像上时,数据内容没有出现

php - 重置密码显示布局

javascript - 而不是李,它的 child 被点击

javascript - 如何通过单击按钮填充 polymer 下拉菜单?

javascript - 解析 jQuery.serializeArray() 中的数字