2016-04-01 10 views
0

私は2つの言語をサポートするウェブサイトを持っています。 Chromeの切り替え言語は素晴らしいですが、Firefoxではデフォルトで設定されているドイツ語の言語変数を常に設定する "英語"または "ドイツ語"の言語をクリックしても問題ありません。Firefoxで言語が変更されない

私はこの問題を解決するために?ここ

は、私は私はあなたがこのようなよくものとしてのonload関数にAJAXリクエストを置くべきだと思い

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

ここで、Cookieの値を変更しますか? –

+0

メインポストに関数を追加したばかりです – Christian

+0

Firefoxはクッキーを無効にしますか? – VinhNT

答えて

0

getLangCookie関数を呼び出す例関数です。

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

私はこれを行うことはできません。これらの2つの関数は2つの異なるファイルにあり、それらの背後にはまったく異なるロジックがあります。 – Christian

+0

次に、ajaxリクエストの前にクッキーチェックを置く必要があります。 –

関連する問題