如果没有该名称的cookie存在,则添加cookie jquery

时间:2015-12-10 18:57:16

标签: javascript jquery cookies

我有一个启动页面,用户可以选择两种体验。一旦选择,就会添加一个cookie,以便他们始终获得该体验(或至少在接下来的30天内)。但是,如果用户直接访问子网站并绕过启动页面,则应自动将其添加到默认体验并获取默认的cooke(theme1)。除默认cookie部分之外的所有内容都正常工

这就是我所拥有的:

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
$('.theme2').click(function() {     
    createCookie('chooseTheme','chosenTheme2',30)       
});
$('.theme1').click(function() {     
    createCookie('chooseTheme','chosenTheme1',30)       
}); 
var x = readCookie('chooseTheme');
if ($.cookie('chooseTheme') === null) {
    createCookie('chooseTheme','chosenTheme1',30);      
} 
if (x.indexOf('chosenTheme1') > -1) {
    $('body').addClass('themeOne');
} else if (x.indexOf('chosenTheme2') > -1) {
    $('body').addClass('themeTwo');
} 

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试运行每1分钟更新一次的循环。在更新期间,它会触发检查cookie的函数,如下所示:

setInterval(checkCookie(), 60000);
//the 60000 is for 60000 milliseconds which is 1 minute.
function checkCookie() {
    var x = readCookie('chooseTheme');
    if ($.cookie('chooseTheme') === null) {
    createCookie('chooseTheme','chosenTheme1',30);      
    } 
    if (x.indexOf('chosenTheme1') > -1) {
        $('body').addClass('themeOne');
    } else if (x.indexOf('chosenTheme2') > -1) {
    $('body').addClass('themeTwo');
    }
}

然后将上面的代码添加到您的代码中,它将每隔1分钟检查一次主题。我希望这会对你有所帮助。