首页 > 技术文章 > js 操作 cookie

klbc 2016-05-17 15:33 原文

js 操作 cookie 的方法如下:

//设置cookie
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}
//获取cookie
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) != -1) return c.substring(name.length, c.length);
    }
    return "";
}
//清除cookie  
function clearCookie(name) {  
    setCookie(name, "", -1);  
}  

  使用事例如下:

    var user = getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
        user = prompt("Please enter your name:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }

  一开始,我都差点以为cookie只能是在在线网站上面才有,而且cookie的作用域一般情况下是整个站点(比如你在某网站的页面1设置了cookie,然后你跳到了页面2,页面2里面也一样有此cookie的值),因为我的实践结果是,在本地的一个静态html(如 D:\demo 目录下)里面,加入了类似上面的js代码,但是每次我刷新页面的时候,浏览器都没有弹出我设置的cookie值,后来通过查找资料和实践之后,才知道,原因本地的静态页面,也可以有cookie的,因为我之前用的浏览器是chrome和360急速浏览器,而Google Chrome只支持在线网站的cookie的读写操作,对本地html的cookie操作是禁止的。我换成了IE浏览器之后,就可以了。

  PS:chrome浏览器的cookie可以在resources里面查看,如下:

     

推荐阅读