如何正确获取javascript Cookie

How to correctly GET javascript Cookie?

本文关键字:Cookie javascript 获取 何正确      更新时间:2023-09-26

在这个测试站点上,我有一个fancybox灯箱弹出得很好。然后我添加了代码,希望它只在第一次访问时弹出,但之后再也不会弹出。所以我在下面有一些JS,当点击灯箱中的任何一个链接时,它都会运行setCookie()。在加载时,我运行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>

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

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