0

言語選択用の 1 つの html ページ index.html (2 つの言語リンクを含むシンプルな黒いオーバーレイ) があります。これは、アドレスに /EN または /CN を追加しない限り、ユーザーが常にアクセスするページとして機能し、各リンクは別の html にリンクします。ファイル、EN.html および CN.html。誰かが初めて私のサイトにアクセスしたときに、通常どおり言語選択index.htmlに移動し、言語を選択し、選択を記憶するためにCookieを作成し、その後の訪問で完全にCookieを作成する方法を知っている人はいますか? 「www.mywebsite.com」と入力した場合でも、index.html をスキップして www.mywebsite.com/EN または www.mywebsite.com/CN に直接アクセスしますか? このサイトで、言語選択を記憶する 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 });
});

});

しかし、これは言語選択ページが言語の 1 つと同じ html ファイルである場合にのみ機能すると思いますか? 別ページの言語選択ページとは?ありがとう。

4

1 に答える 1

0

この問題は2つの方法で解決できます。より信頼性が高いが、より複雑な方法は、リンクをクリックしてホームページに戻るたびに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 });
});

});

このソリューションは、次の理由ではるかにスケーラブルです。

  • 他のファイルを変更する必要はありません

注:特別な状況では、リファラーフィールドがnullになる場合があります。あなたはそれがどれほど信頼できるかを研究しなければならないでしょう、しかし私はこの場合、それはほとんどいつもうまくいくはずだと思います。

于 2012-11-25T23:06:34.500 に答える