2016-04-01 10 views
0

İki dili destekleyen bir web sitem var. Chrome anahtarlama dilleri harika çalışıyor, ancak Firefox'ta hangi düğmeyi tıklattığımı farketmez, "ingilizce" veya "almanca" dil için her zaman dil değişkenimi varsayılan olarak ayarlanmış Almanca dil için ayarlardeğişen dil Firefox'ta çalışmıyor

Birisi yardımcı olabilir Bu sorunu çözmek için bana

burada böyle bir şey de onload işlevine ajax isteği koymak gerektiğini düşünüyorum ben getLangCookie fonksiyonunu

var lang = getLangCookie('lang'); 
console.log('lang = ', lang); 
$.ajax({ 
    type: "GET", 
    url: '/menu.xml', 
    dataType: "xml", 
    success: function (xml) { 
     $(xml).find('description ' + lang).each(function() { 
      $(this).parent().html($(this).html()); 
     } 
     ); 
     var menu = []; 
     var data = $.xml2json(xml)['#document']; 
     that.menu = data.menu; 
     console.log('menu = ', that.menu); 
    } 
} 

); 
function getLangCookie(lang) { 
    var name = lang + "="; 
    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); 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
} 
// by clicking on English button set the cookie value 
function onEnglishbtn() { 
    setLangCookie("lang", "en", 30); 

    document.location.reload(); 
    var lang = getLangCookie('lang'); 

    return lang; 
} 

    function setLangCookie(lang, value, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires=" + d.toGMTString(); 
    document.cookie = lang + "=" + value + "; " + expires; 
} 
// function onload from index.html setting up the lang by default 
window.onload = function() { 
    setLangCookie("lang", "de", 30); 
    if (typeof window.localStorage !== "undefined" && !localStorage.getItem('visited')) { 
     localStorage.setItem('visited', true); 
     setLangCookie("lang", "de", 30); 
    } 
} 
+0

Çerez değerini nerede değiştirirsiniz? –

+0

Sadece ana yazıya bir işlev ekledim – Christian

+0

Firefox çerezi devre dışı bırakıyor mu? – VinhNT

cevap

0

diyoruz örnek işlevidir.

function getLangCookie(lang) { 
    var name = lang + "="; 
    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); 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
} 
// by clicking on English button set the cookie value 
function onEnglishbtn() { 
    setLangCookie("lang", "en", 30); 

    document.location.reload(); 
    var lang = getLangCookie('lang'); 

    return lang; 
} 

function setLangCookie(lang, value, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires=" + d.toGMTString(); 
    document.cookie = lang + "=" + value + "; " + expires; 
} 
// function onload from index.html setting up the lang by default 
window.onload = function() { 
    var lang_cookie = getLangCookie('lang'); 
    console.log('lang_cookie = ', lang_cookie); 
    // if cookie doesn't exist 
    if (lang_cookie !== null) { 
     setLangCookie("lang", "de", 30); 
    } // if cookie exists 
    else { 
     console.log('lang_cookie exists!'); 
     setLangCookie("lang", lang_cookie, 30); 
    } 

    $.ajax({ 
     type: "GET", 
     url: '/menu.xml', 
     dataType: "xml", 
     success: function (xml) { 
      $(xml).find('description ' + lang_cookie).each(function() { 
       $(this).parent().html($(this).html()); 
      } 
      ); 
      var menu = []; 
      var data = $.xml2json(xml)['#document']; 
      that.menu = data.menu; 
      console.log('menu = ', that.menu); 
     } 
    }); 
} 
+0

Bunu yapamam. Bu iki işlev, arkalarında tamamen farklı bir mantıkla iki farklı dosyadadır. – Christian

+0

Daha sonra çerez kontrolünü ajax isteğinden önce koymalısınız. –