我可以从转发的域中触发jQuery set cookie吗?

时间:2014-07-19 13:16:08

标签: php jquery cookies

可能有一个多语言网站,通过使用jQuery链接切换HTML div类来翻译语言,然后依次设置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在下面,默认为英语 - 如果选择德语,则类更改为德语

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

然后使用CSS我将使用display:none和display隐藏所有其他语言:阻止德语。这个目前很好用。但

我需要知道的是,如果引用/本地化域名转发到网站,我是否可以触发此jQuery cookie和函数?

我们拥有域名 example.com ,如果我们将域名 germanexample.com 重定向到 example.com ,我会像cookie和语言选择是德语而不是默认的英语。 jQuery可以处理转发的域,还是有一种方法可以使用PHP来创建类似的期望效果?

我希望这很清楚,有道理,很难解释......

先谢谢大家。

1 个答案:

答案 0 :(得分:0)

如果您将#hash添加到引用的网址,然后在引用的域中处理Cookie,这可能是最简单的。

所以在germanexample.com上你的链接/推荐将是example.com #lang = german 然后在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,因此谷歌的德语版本仍然会出现英文,德文和中文文本。< / p>