Запомните выбор языка - затем перенаправьте на домашнюю страницу при последующих посещениях

У меня есть одна 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, который запоминает выбор языка, который в основном сводится к плагину cookie JQuery и сценарию, подобному следующему:

$(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-файл, что и один из языков? Какая страница выбора языка является отдельной страницей? Благодарю.

1 ответ

Решение

Вы можете решить эту проблему двумя способами. Более надежным, но более сложным способом является очистка куки при каждом нажатии на ссылку, чтобы вернуться на домашнюю страницу. Пример:

<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 });
});

});

Это решение является гораздо более масштабируемым, потому что:

  • вам не нужно изменять какие-либо другие файлы

Примечание: поле реферера иногда может быть пустым при особых обстоятельствах. Вам придется исследовать, насколько это надежно, но я думаю, что в этом случае это должно работать почти все время.

Другие вопросы по тегам