我有一个主页,可以选择2个链接。当点击其中一个链接时,我想创建一个cookie,以便所有其他内部页面都记住这个选择。
如何在一个页面上设置cookie并在不同的页面上阅读相同的cookie?
这就是我所拥有的:
// Home page on click event
function setRed() {
document.cookie = "color=red; max-age=" + 60 * 60 * 24 * 365; // 60 seconds to a minute, 60 minutes to an hour, 24 hours to a day, and 365 days.
};
//Internal Page Check
window.onload = checkCookie();
function checkCookie() {
if (document.cookie.indexOf("color") == "red") {
document.body.id = "red";
} else {
document.body.id = "blue";
};
};
答案 0 :(得分:2)
请查看this stackoverflow问题。
基本上,当你说document.cookie
时,请确保将其添加到结尾:
;path=/
然后拨打checkCookie()
这基本上告诉浏览器让cookie可以在整个站点的任何地方访问。但是,据我所知,如果您的两个页面托管在不同的域上,则它们都不可能访问相同的cookie(出于安全原因)。
此外,用于获取cookie的功能看起来不正确。来自w3schools:
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 "";
}
然后,您可以在checkCookie()
功能中使用此功能:
function checkCookie() {
if (getCookie("color") == "red") {
document.body.id = "red";
} else {
document.body.id = "blue";
};
};
答案 1 :(得分:1)
尝试添加Cookie的路径,以便您网站中的所有页面都可以访问它。
// Home page on click event
function setRed() {
// 60 seconds to a minute, 60 minutes to an hour, 24 hours to a day, and 365 days.
document.cookie = "color=red; max-age=" + 60 * 60 * 24 * 365 +"; path=/";
};
//Internal Page Check
window.onload = checkCookie();
function checkCookie() {
if (document.cookie.indexOf("color") == "red") {
document.body.id = "red";
} else {
document.body.id = "blue";
};
};