Javascript 不会保存 cookie
Javascript won't save cookie
我正在使用快速的Javascript代码(基于教程)来尝试在网站上创建年龄屏幕。但是,尽管年龄屏幕应该只弹出一次,然后在一段时间内正常,但它每次刷新都会弹出。这是我使用的代码:
<script type="text/javascript">
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
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 age = getCookie("allowed");
if (age != true) {
age = confirm("you must be 18 or older to enter and view the content on this blog");
}
if (age == true) {
setCookie("allowed", age, 7);
} else if (age == false) {
//window.location.replace("http://tumblr.com/dashboard");
}
return age;
}
</script>
我已经检查了我能找到的所有可用的在线资源和教程,但没有任何解释为什么这不会正确保存 cookie。如果我打开控制台,它会识别创建 cookie 的站点,但会为我提供所有内容的未定义值。
如果我让控制台运行 checkCookie() 函数,它会根据我单击"确定"还是"取消"返回正确的值,但它仍然不会实际将该值保存到 cookie 中。
谁能想到这可能发生的任何原因?
更新
将age == true
检查从布尔检查更改为字符串后,没有任何区别。
cookie 可能正在保存。但是您的getCookie方法中有一个拼写错误,例如6 c.substring(name,length,c.length);
相反,你应该有c.substring(name.length,c.length);
更新
将 checkCookie 方法中的以下行更改为
if (age) {
setCookie("allowed", age, 7);
}
或
if (age === true) {
setCookie("allowed", age, 7);
}
调用 setCookie 后,刷新浏览器,您应该能够看到 cookie 集。
更新 2
getCookie
返回一个字符串,因此它应该age != "true"
和 confirm
返回一个布尔值,因此age === true
应该可以工作
var age = getCookie("allowed");
if (age != "true") {
age = confirm("you must be 18 or older to enter and view the content on this blog");
}
if (age === true) {
setCookie("allowed", age, 7);
} else if (age == false) {
//window.location.replace("http://tumblr.com/dashboard");
}
(typeof age)
是字符串因此,您可以将age != true
更改为age != 'true'
,而对于其他检查也是如此,或者将其转换为布尔值,例如!!age != true
相关文章:
- 按下按钮时保存cookie
- 如何在Javascript中将单选按钮值保存到cookie中
- Cookie 在 Spotify (Javascript) 中调用 ajax 后未保存
- 单击时将类添加到 ancer 标签并使用 cookie 保存
- Javascript 不会保存 cookie
- 大规模保存cookie的最佳方式是什么
- 如何将jQuery克隆的文本输入保存到cookie或html5存储中
- Cookie,用于保存包括一个变量在内的多个值
- 在js中有一个cookie保存序列化的svgs
- Cookie 保存/读取无法按预期工作
- 如何在 javascript 的信息窗口中使用 cookie 保存复选框状态
- Javascript使用javascript按钮更改CSS页面,并根据cookie保存
- jquery:使用cookie保存拖放位置
- 在网页中使用javascript中的cookie保存用户选择的背景图像
- 表单值在提交后作为cookie保存&页面更改
- jQuery-切换元素并用cookie保存
- 在实现cookie保存状态到JQuery切换时遇到麻烦
- 如何在游戏中使用cookie保存分数?
- NPM tough-cookie:保存一个cookie,然后转储它
- Javascript cookie保存和加载