2014-07-19 39 views
0

可能有一個多語言網站,通過使用jQuery鏈接切換HTML div類來翻譯語言,然後jQuery鏈接設置cookie以保持整個網站的語言一致。我可以從轉發域中觸發jQuery設置Cookie嗎?

jQuery的下面:

$(function() { 
    $("a.langSelect").click(function() { 
     var language = $(this).text(); 
     $("div#masterLangauge").removeClass().addClass(language); 
     createCookie("language",language); 
     return false; 
    }); 

    if (readCookie("language") != null) { 
     $("div#masterLangauge").removeClass().addClass(readCookie("language")); 

    } 
    else 
    { 
     $("div#masterLangauge").removeClass().addClass("english"); 
    } 

}); 

function createCookie(name,value,days) { 
if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
} 
else var expires = ""; 
document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(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; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

的HTML鏈接如下:

<a class="langSelect" href="#">english</a 
<a class="langSelect" href="#">deutsch</a> 
<a class="langSelect" href="#">chinese</a> 
其翻轉

HTML格低於,默認爲英語 - 如果德國選擇了類變爲德國

<div id="masterLangauge" class="english"> 

然後使用CSS,我將使用display:none和display:block隱藏所有其他語言德語。這在很好的情況下工作正常。

我需要知道的是,如果引用/本地化域名轉發到網站,我可以觸發此jQuery cookie和功能?

所以我們有域名example.com,如果我們有域名germanexample.com重定向到example.com我想的cookie和語言的選擇是在德國,而不是默認英語。 jQuery能否處理轉發的域名,或者我可以使用PHP來創建類似的預期效果嗎?

我希望這是明確的,是有道理的,一個相當困難的事情解釋...事先大家

感謝。

+0

您可以使用Referrer或在重定向服務器上設置自定義HTTP標頭,並在JS的另一個域上讀取此標頭。 – marekful

回答

0

也許最簡單的方法是將#hash添加到引用的URL中,然後在引用的域中處理那裏的cookie。

所以在germanexample.com你的鏈接/轉診將example.com#LANG =德國 然後在example.com您可以檢查是否存在哈希

var getHashValue = function(key) { 
    if (typeof key !== 'string') { 
     key = ''; 
    } else { 
     key = key.toLowerCase(); 
    } 

    var keyAndHash = location.hash.toLowerCase().match(new RegExp(key + '=([^&]*)')); 
    var value = ''; 

    if (keyAndHash) { 
     value = keyAndHash[1]; 
    } 

    return value; 
}; 

if(getHashValue('lang')){ 
    //setCookie.... etc etc. 
} else { 
    // readCookie etc. 
} 

必須指出雖然這可能不是爲搜索引擎優化工作,因爲爬蟲大多不會執行JavaScript,因此Google的德語版本仍然會以英文,德文和中文文本觸及頁面。

相關問題