如何正确获取javascript Cookie?

时间:2015-06-22 17:18:41

标签: javascript jquery cookies

在这个test site上,我有一个fancybox灯箱弹出正常。然后我添加了代码,希望在FIRST访问时只弹出它,但之后再也不会。所以我在下面有一些JS,当点击灯箱中的任一链接时运行setCookie()。并且onload,我运行checkCookie()。如果cookie存在,请不要显示灯箱。如果它不存在,请显示灯箱。

使用我的新设置,获取和检查代码,我无法使灯箱立即工作,我很确定这是因为getCookie没有正确“获取”cookie。有没有人看到任何明显错误的东西?

              

function setCookie() {
document.cookie="lightboxcookie=lightboxseen; expires=Thu, 18 Dec 2020 12:00:00 UTC";
}

function getCookie(cname) {
    var name = cname + "=";
    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);
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie() {
 var thecookie=getCookie("lightboxcookie");
    if (thecookie != "") {
        } else {
            <!--Show Lightbox-->
            jQuery.noConflict()(function ($) { 
                $(document).ready(function() { 
                    $(".lightbox").fancybox();
                    $(".lightbox").eq(0).trigger('click');
                    $(".lightbox").fancybox({
                        helpers : {
                            overlay : { 
                                css : {
                                    opacity: 0.8,
                                    'background-color' : '#ff0000'
                                }
                            }
                        }
                    });
                });
            });
       }
    }
}

</script>

1 个答案:

答案 0 :(得分:1)

checkCookie函数的末尾似乎有一个额外的大括号。如果您删除了您的代码似乎按预期工作:http://jsfiddle.net/akk6wx9q/

顺便说一句,如果您打算使用JavaScript在客户端处理cookie,我建议您查看经过良好测试且易于使用的Cookie.js library。通过使用它,您可以节省大量时间和尝试自己开发cookie处理功能的痛苦;)