0

我有一个 html 页面,index.html 用于语言选择(带有 2 个语言链接的简单黑色覆盖),它充当用户总是访问的页面,除非在地址中添加 /EN 或 /CN,然后每个链接都链接到不同的 html文件,EN.html 和 CN.html。有谁知道如何创建 cookie 以便某人第一次访问我的网站时,他/她会正常进入语言选择 index.html,选择语言,创建 cookie 以记住选择,然后在以后的访问中完全跳过 index.html 并直接访问 www.mywebsite.com/EN 或 www.mywebsite.com/CN,即使她/他输入“www.mywebsite.com”?我在这个网站上阅读了一个关于创建一个记住语言选择的 cookie 的教程,它基本上归结为 JQuery cookie 插件和一个像这样的脚本:

$(function () {

var url = 'your_url';
var en_page = 'en.html';
var cn_page = 'cn.html';

if ($.cookie('default_page') != null) {
    if (window.location.href != url + '/' + $.cookie('default_page')) {
        window.location.href = url + '/' + $.cookie('default_page');
    }
}

$('#set_en_button').click(function () {
    $.cookie('default_page', en_page, { expires: 999 });
});

$('#set_cn_button').click(function () {
    $.cookie('default_page', cn_page, { expires: 999 });
});

});

但我认为这只适用于语言选择页面与其中一种语言相同的 html 文件?什么语言选择页面是单独的页面?谢谢。

4

1 回答 1

0

你可以通过两种方式解决这个问题。更可靠但更复杂的方法是在您单击链接导航回主页时清除 cookie。例子:

<a href="index.html" class="return-link">Back Home</a>
<script type="text/javascript">
$(function() {
    $('.return-link').click(function(e) {
        $.removeCookie('default_page');
    });
});
</script>

此解决方案并不理想,因为:

  • 当您在整个网站中添加更多链接回到您的主页时,很难维护

更优雅的解决方案是更改您的主页代码并使用该document.referrer属性。该属性保存在到达当前页面之前访问的最后一个页面。使用这些知识,您可以将代码更改为:

$(function () {

var url = 'your_url';
var en_page = 'en.html';
var cn_page = 'cn.html';

// if the last page you visited has the same hostname
// as the index page, (eg. www.domain.com == www.domain.com)
// you must be coming from a page on your own site
// therefore clear the existing cookie
if (document.referrer.host == document.location.host) {
    $.removeCookie('default_page');
}

if ($.cookie('default_page') != null) {
    if (window.location.href != url + '/' + $.cookie('default_page')) {
        window.location.href = url + '/' + $.cookie('default_page');
    }
}

$('#set_en_button').click(function () {
    $.cookie('default_page', en_page, { expires: 999 });
});

$('#set_cn_button').click(function () {
    $.cookie('default_page', cn_page, { expires: 999 });
});

});

该解决方案更具可扩展性,因为:

  • 您不必修改任何其他文件

注意:在特殊情况下,referrer 字段有时可能为空。您将不得不研究它的可靠性,但我认为在这种情况下,它应该几乎一直有效。

于 2012-11-25T23:06:34.500 回答