操作cookie

JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求。 cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。

cookie概述
cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

不同的浏览器对cookie的实现也不一样,但其性质是相同的。例如在Windows 2000以及Windows xp中,cookie文件存储于documents and settings\userName\cookie\文件夹下。通常的命名格式为:userName@domain.txt。

cookie机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点。它可以用于以下几种场合。

(1)保存用户登录状态。例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。 cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个 月、一年等。

(2)跟踪用户行为。例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了 cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后 台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便。

(3)定制页面。如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问的界面风格。

(4)创建购物车。正如在前面的例子中使用cookie来记录用户需要购买的商品一样,在结账的时候可以统一提交。例如淘宝网就使用cookie记录了用户曾经浏览过的商品,方便随时进行比较。

当然,上述应用仅仅是cookie能完成的部分应用,还有更多的功能需要全局变量。cookie的缺点主要集中于安全性和隐私保护。主要包括以下几种:

(1)cookie可能被禁用。当用户非常注重个人隐私保护时,他很可能禁用浏览器的cookie功能;
(2)cookie是与浏览器相关的。这意味着即使访问的是同一个页面,不同浏览器之间所保存的cookie也是不能互相访问的;
(3)cookie可能被删除。因为每个cookie都是硬盘上的一个文件,因此很有可能被用户删除;
(4)cookie安全性不够高。所有的cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。

代码示例:


/*添加cookie*/  

function setCookie(name,value,outTime){  
    var expdate=new Date();  
    var outms=outTime*24*60*60*1000;//过期时间,以天为单位‘1’表示一天  
    expdate.setTime(expdate.getTime()+outms);  
    var cookieStr=name+"="+escape(value)+";expires="+expdate.toGMTString();  
    //escape方法的作用是进行编码,主要防治value中有特殊字符  
    document.cookie=cookieStr;  
}  
/*删除cookie 
    cookie的删除并不是物理意义上的直接删除, 
    而是将cookie的有效期设置为失效,然后由浏览器删除失效的cookie删除 
*/  
function deleteCookie(cookiename){  
    var date = new Date();  
    var outTime=date.getTime()-1000;//将cookie的有效期设置为失效  
    date.setTime(outTime);  
    document.cookie=cookiename+"='';expires="+date.toGMTString();  
}  
/*读取cookie*/  
function getCookie(cookieName){  
    var cookieStr=document.cookie;  
    var cookievalue="";  
    if(cookieStr!=null &&cookieStr!=undefined){  
        var arrayCookie=cookieStr.split(';');  
        for(var i=0;i<arrayCookie.length;i++){  
                var arrayDetail=arrayCookie[i].split('=');  
                if(i==0){  
                    cookiMap='{"'+arrayDetail[0]+'":"'+arrayDetail[1]+'",';  
                }else if(i==arrayCookie.length-1){  
                    cookiMap+='"'+arrayDetail[0]+'":"'+arrayDetail[1]+'"}';  
                }else{  
                    cookiMap+='"'+arrayDetail[0]+'":"'+arrayDetail[1]+'",';  
                }  
            }  
        }  
        var s=cookiMap.replace(/\s/g,"");//去掉空格  
        var cookieObj=JSON.parse(s);  
    for(var item in cookieObj){  
        if(item==cookieName){  
            cookievalue=unescape(cookieObj[item]);  
        }  
    }  
    return cookievalue;  
}  
  
window.οnlοad=function(){  
    var jsonObj={"姓名":"丁**","年龄":"24","职业":"程序员"}  
    setCookie("abc",JSON.stringify(jsonObj),2);//在cookie中写入json串  
    setCookie("abd","hello word",2);// 写入cookie  
    setCookie("abe","边城;阿贾克斯",2);  
    var s={'abc':'{"姓名":"丁**","年龄":"24","职业":"程序员"}','abd':'hello word','abe':'编程;阿贾克斯'};  
    deleteCookie('abe'); //删除cookie  
    alert(getCookie('abe'));//根据key值获取cookie  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值