所以目前我正在努力在用户的浏览器中设置一个cookie ......这就是我这样做的方式:
var cookiename = "benjaminpotter_welcome";
var cookievalue = "visited";
var date = new Date();
date.setTime(date.getTime()+604800000)
var cookieExpiration = date.toGMTString();
var cookiepath = "; path=/";
var myCookie = cookiename + "=" + cookievalue + ";expires=" + cookieExpiration + path;
document.cookie = myCookie;
这就是我试图接收它的方式:
function readCookie(benjaminpotter_welcome) {
cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
var sMatch = (' '+document.cookie).match(re);
if (cookieName && sMatch){
var cookieval = unescape(sMatch[1]);
}else{
var cookieval = '';
};
};
事情是它根本不起作用......
这就是我想要发生的事情......我想在用户的浏览器中设置一个名为'benjaminpotter_welcome'的cookie,其值为'visited'。
然后我需要请求那个cookie(当然在下一页上加载)并测试它是否''访问',执行哪些代码(或者在我的情况下不执行。
以下是我的网站在尝试使用此代码时无法正常工作的部分:
<script type="text/javascript">
function readCookie(benjaminpotter_welcome) {
cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
var sMatch = (' '+document.cookie).match(re);
if (cookieName && sMatch){
var cookieval = unescape(sMatch[1]);
}else{
var cookieval = '';
};
};
$(document).ready(function(){
$("#thanks").fadeOut(0);
$("#overlay_big").fadeOut(0);
readCookie();
if(cookieval == 'visited'){
}else{
$("#overlay_big").delay(2000).fadeIn(1000);
};
});
</script>
答案 0 :(得分:2)
您在方法中设置cookieval
,这使其成为私有变量。尝试:
function readCookie(cookieName) {
cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
var sMatch = (' '+document.cookie).match(re);
return cookieName && sMatch ? unescape(sMatch[1]) : '';
};
和你的DOM准备好了:
$(document).ready(function(){
$("#thanks").fadeOut(0);
$("#overlay_big").fadeOut(0);
var cookieval = readCookie("benjaminpotter_welcome");
if(!cookieval == 'visited'){
$("#overlay_big").delay(2000).fadeIn(1000);
};
});
应该这样做。
如果您了解自己的代码,我建议jquery.cookie plugin使用javascript处理Cookie。