0

这是一个带有语言选择的模态窗口,如果用户选择选项 1,模态将隐藏,并存储一个 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

我会说你从一开始就做错了。您正在尝试存储有关用户选择语言的信息,它只能是一种语言,对吗?为什么要存储两个内容为“true”的不同cookie?例如,您可以存储一个名为“lang”的 cookie,并将其内容设置为“en”或“es”或用户选择的任何语言。然后你会有:

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

如果您绝对必须使用不同的 cookie,例如因为您正在扩展现有的 CMS 或框架或其他任何东西,您应该像这样将 if 分开:

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