设置和检查cookie

时间:2015-11-27 04:08:24

标签: javascript cookies

我有一个主页,可以选择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";
  };
};

2 个答案:

答案 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";
    };
};