0

我正在尝试在 jquery 中做 cookie 的东西,但它没有得到实现,你们能解决我的问题吗

html代码

<a rel="en_CA" class="selectorCountries marginUnitedStates locale-link" href="http://www.teslamotors.com/en_CA">united states</a>
<a rel="en_US" class="selectorCountries marginSecondCountry locale-link" href="http://www.teslamotors.com/en_CA">canada</a>
<a rel="en_BE" class="selectorCountries marginCanadaFrench locale-link" href="http://www.teslamotors.com/en_BE">canada(french)</a>

我在下面提供我的 js 代码

http://jsfiddle.net/SSMX4/76/

当我单击弹出窗口中的不同国家/地区链接时,它的行为应类似于此站点

http://www.teslamotors.com/it_CH

    $('.locale-link').click(function(){
        var desired_locale = $(this).attr('rel');
        createCookie('desired-locale',desired_locale,360);
        createCookie('buy_flow_locale',desired_locale,360);
        closeSelector('disappear');
    })

    $('#locale_pop a.close').click(function(){
        var show_blip_count = readCookie('show_blip_count');
        if (!show_blip_count) {
            createCookie('show_blip_count',3,360);
        }
        else if (show_blip_count < 3 ) {
            eraseCookie('show_blip_count');
            createCookie('show_blip_count',3,360);
        }
        $('#locale_pop').slideUp();
        return false;
    });


function checkCookie(){
        var cookie_locale = readCookie('desired-locale');
        var show_blip_count = readCookie('show_blip_count');
        var tesla_locale = 'en_US'; //default to US
        var path = window.location.pathname;
        // debug.log("path = " + path);
        var parsed_url = parseURL(window.location.href);
        var path_array = parsed_url.segments;
        var path_length = path_array.length
        var locale_path_index = -1;
        var locale_in_path = false;
        var locales = ['en_AT', 'en_AU', 'en_BE', 'en_CA',
                        'en_CH', 'de_DE', 'en_DK', 'en_GB',
                        'en_HK', 'en_EU', 'jp', 'nl_NL',
                        'en_US', 'it_IT', 'fr_FR', 'no_NO']
        // see if we are on a locale path
        $.each(locales, function(index, value){
            locale_path_index = $.inArray(value, path_array);
            if (locale_path_index != -1) {
                tesla_locale = value == 'jp' ? 'ja_JP':value;
                locale_in_path = true;
            } 
        });
        // debug.log('tesla_locale = ' + tesla_locale);
        cookie_locale = (cookie_locale == null || cookie_locale == 'null') ? false:cookie_locale;
        // Only do the js redirect on the static homepage.
        if ((path_length == 1) && (locale_in_path || path == '/')) {
            debug.log("path in redirect section = " + path);
            if (cookie_locale && (cookie_locale != tesla_locale)) {
                // debug.log('Redirecting to cookie_locale...');
                var path_base = '';
                switch (cookie_locale){
                    case 'en_US':
                        path_base = path_length > 1 ? path_base:'/';                    
                        break;
                    case 'ja_JP':
                        path_base = '/jp'
                        break;
                    default:
                        path_base = '/' + cookie_locale;
                }
                path_array = locale_in_path != -1 ? path_array.slice(locale_in_path):path_array;
                path_array.unshift(path_base);
                window.location.href = path_array.join('/');
            }
        }
        // only do the ajax call if we don't have a cookie
        if (!cookie_locale) {
            // debug.log('doing the cookie check for locale...')
            cookie_locale = 'null';
            var get_data = {cookie:cookie_locale, page:path, t_locale:tesla_locale};
            var query_country_string = parsed_url.query != '' ? parsed_url.query.split('='):false;
            var query_country = query_country_string ? (query_country_string.slice(0,1) == '?country' ? query_country_string.slice(-1):false):false;
            if (query_country) {
                get_data.query_country = query_country;
            }
            $.ajax({
                url:'/check_locale',
                data:get_data,
                cache: false,
                dataType: "json",
                success: function(data){
                            var ip_locale = data.locale;
                            var market = data.market;
                            var new_locale_link = $('#locale_pop #locale_link');
                            if (data.show_blip && show_blip_count < 3) {
                                setTimeout(function(){
                                    $('#locale_msg').text(data.locale_msg);
                                    $('#locale_welcome').text(data.locale_welcome);
                                    new_locale_link[0].href = data.new_path;
                                    new_locale_link.text(data.locale_link);
                                    new_locale_link.attr('rel', data.locale);
                                    if (!new_locale_link.hasClass(data.locale)) {
                                        new_locale_link.addClass(data.locale);
                                    }
                                    $('#locale_pop').slideDown('slow', function(){
                                        var hide_blip = setTimeout(function(){
                                            $('#locale_pop').slideUp('slow', function(){
                                                        var show_blip_count = readCookie('show_blip_count');
                                                        if (!show_blip_count) {
                                                            createCookie('show_blip_count',1,360);
                                                        }
                                                        else if (show_blip_count < 3 ) {
                                                            var b_count = show_blip_count;
                                                            b_count ++; 
                                                            eraseCookie('show_blip_count');
                                                            createCookie('show_blip_count',b_count,360);
                                                        }
                                                });
                                            },10000);
                                        $('#locale_pop').hover(function(){
                                            clearTimeout(hide_blip);
                                            },function(){
                                                setTimeout(function(){$('#locale_pop').slideUp();},10000);
                                            });
                                    });
                                },1000);
                            }
                        }
            });
    }
4

1 回答 1

0

这将对您有很大帮助!

jQuery Cookie 插件

我经常用这个。非常简单易学。内置所有必要的 cookie 功能,并允许您使用少量代码来创建 cookie、删除它们、使它们过期等。

如果您对如何使用有任何疑问,请告诉我(尽管 DOCS 有相当数量的说明)。

于 2012-10-26T23:38:22.467 回答