【发布时间】:2013-12-08 23:58:12
【问题描述】:
我试图在用户访问网站时获得一次性提醒,然后放置一个 cookie,这样他们就不会在每次返回该网站时都对它感到厌烦。 cookie 已保存并且警报正在执行,但它继续执行,我正在撕毁我的头发。
我尝试了很多在网络上找到的东西(StackExchange,我多么爱你),但似乎都没有用。这是当前状态:
<script>
function setCookie(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=/";
}
</script>
<body>
<script type="text/javascript">
if(!setCookie('testcookie')) {
alert("hello world");
setCookie('testcookie','1',3);
}
</script>
</body>
查看cookie记录,似乎每次都在设置。如果我在脚本中更改到期日期,它每次都会在开发控制台中更改。不确定这是否表明存在问题。
===== 结束解决方案 ======
我错过了 getCookie 调用。我还意识到,当尝试将其添加到头脚本时,执行需要是它自己的函数 * facepalm *.我还将所有脚本添加到标题中,而是在正文标记中调用该函数。
<head>
<script>
function setCookie(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=/";
}
var getCookie = function (c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
};
function checkCookie() {
if(!getCookie('testcookie2')) {
alert("hello world");
setCookie('testcookie2','1',3);
}
}
</script>
</head>
<body onload="checkCookie()">
</body>
TA-DA!
【问题讨论】:
-
您总是在设置 cookie,但没有查询任何现有的 cookie。
-
ftr w3schools 有很多不良信息,包括看似不错的不良信息,请勿将其视为可靠来源。
-
是的,我发现这是一个很好的起点,但他们通常会忽略对学习产生巨大影响的小细节,或者没有足够多的示例来实际帮助解决您的问题.不过,这个论坛已被证明是无价的!span>
标签: javascript cookies setcookie