在这个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>
答案 0 :(得分:1)
您checkCookie
函数的末尾似乎有一个额外的大括号。如果您删除了您的代码似乎按预期工作:http://jsfiddle.net/akk6wx9q/
顺便说一句,如果您打算使用JavaScript在客户端处理cookie,我建议您查看经过良好测试且易于使用的Cookie.js library。通过使用它,您可以节省大量时间和尝试自己开发cookie处理功能的痛苦;)