Запомните выбор языка - затем перенаправьте на домашнюю страницу при последующих посещениях
У меня есть одна 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 });
});
});
Это решение является гораздо более масштабируемым, потому что:
- вам не нужно изменять какие-либо другие файлы
Примечание: поле реферера иногда может быть пустым при особых обстоятельствах. Вам придется исследовать, насколько это надежно, но я думаю, что в этом случае это должно работать почти все время.