0

これは言語選択付きのモーダルウィンドウです。ユーザーがoption1を選択した場合、モーダルは非表示になり、Cookieが保存されるため、ユーザーにはモーダルが表示されなくなります。オプション2を選択すると、ページがリダイレクトされ、Cookieが保存されるため、ページは毎回Cookieに従ってユーザーをリダイレクトします。

現在のコードは、option1 cookieが設定されている場合でもユーザーをリダイレクトしますが、cookieを個別にチェックする方法がわかりません。

編集:@Milošと@balexandreの両方の助けを借りて動作するコード:

$(document).ready(function(){
var myurl = "http://domain.com/";
//var currenturl = $(location).attr('href');
//console.log(myurl, location.href);
if (myurl == location.href) {

    var lang = $.cookie('lang');
    if (lang) {
        if (lang == 'es') {
            window.location.href = "http://domain.com?lang=es";
        }
    }
    else {
var _message_to_show = 'Chosse your preferred language<br/><a href="#" id="modal_close">ENGLISH</a><span id="lang_right"><a href="http://domain.com?lang=es" id="modal_exit">ESPANOL</a></span>';

    $.fancybox(
        _message_to_show,
        {
        'width'             : 350,
        'height'            : 300,
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'centerOnScroll'    : 'true',
        'overlayOpacity'    : 0.9,
        'overlayColor'      : '#000',
        'modal'             : 'true'
        }
    );

    $('#modal_close').live('click', function(e) {
     $.cookie("lang", "en", { path: '/', expires: 7 });
        e.preventDefault();
        $.fancybox.close();
    });

    $('#modal_exit').live('click', function(e) {
    $.cookie("lang", "es", { path: '/', expires: 7 });
        e.preventDefault();
        $.fancybox.close();
        window.location.href = "http://domain.com?lang=es";
    });
}
} else {
}
});
4

1 に答える 1

1

最初から間違っていると言えます。ユーザーが選択した言語に関する情報を保存しようとしていますが、それは 1 つの言語だけですよね? コンテンツが「true」の 2 つの異なる Cookie を保存するのはなぜですか? たとえば、「lang」と呼ばれる単一の Cookie を保存し、そのコンテンツを「en」または「es」、またはユーザーが選択した言語に設定できます。次に、次のようになります。

var lang = $.cookie('lang');
if (lang) {
    if (lang == 'es') {
        redirect
    }
}
else {
    display modal
}

たとえば、既存の CMS やフレームワークなどを拡張しているなどの理由で、どうしても別の Cookie を使用する必要がある場合は、次のように if を分割する必要があります。

if (!$.cookie('en')) {
    if (!$.cookie('es')) {
        display modal
    }
    else {
        redirect
    }
}
于 2012-05-27T14:35:16.153 に答える