JS操作cookie

什么是cookie?

cookie是指Web浏览器存储的少量数据,同时它是与具体的Web页面或者站点相关的.

cookie的属性:

1.name(名字)

2.value(值)

3.expires

指定了cookie的生存期,默认情况下cookie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失,如果想让 cookie存在一段时间,就要为expires属性设置为未来的一个用毫秒数表示的过期日期或时间点,expires默认为设置的expires的当前时间。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期。

4.path(路径)

它指定与cookie关联在一起的网页,默认情况下cookie会与它创建的网页,改网页处于同一目录下的网页以及这个网页下的子目录下的网页相关联.
举个栗子,如果http://www.example.com/catalog/widgets/index.html页面创建了一个cookie,并将改路径设置成”/catalog”,那么该cookie对于http://www.example.com/catalog/order.html页面都是可见的.
再举个栗子,如果把路径设置成”/”,那么该cookie对于任何http://www.example.com这台web服务器上的页面都是可见的.(来源于JavaScript权威指南)

5.domain

domain属性可以使多个web服务器共享,cookie.domain熟悉的默认值是创建cookie的网页所在的服务器主机名.不能讲一个cookie的域设置服务器所在的域之外的域.
举个栗子,order.example.com域下的服务器想要读取catalog.example.com域下设置的cookie的值.这个时候就需要通过设置cookie的domain属性来达到目的.如果catalog.example.com域下的一个页面创建了一个cookie,并将其path属性设置成’/’,其domain属性设置成”.example.com”,那么该cookie就对所有catalog.example.com,orders.example.com以及其他example.com域下的任何服务器都可见.(来源于JavaScript权威指南)

cookie的特点:

1.不同浏览器存放的cookie位置不一样,也是不能通用的.
2.cookie的存储是以域名形式进行区分的.
3.cookie的数据可以设置名字.
4.一个域名下存放的cookie的个数是有限制的,不同浏览器存放的数量不同.
5.每个cookie存放的内容大小也是有限制的,不同浏览器存放大小不一样.

如何通过JS操作cookie

条件:浏览器允许(废话).
我们通过document.cookie来获取网站下的cookie的时候,得到字符串的值,它包含当前网站下所有的cookie.它会把所有的cookie通过一个分号+空格的形式串联起来.
举个栗子,document.cookie=’name=csdn; age=18’.

JS代码

1.设置cookie

W3C的

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

个人比较喜欢这样写,简单直观

function  setCookie(key,value,days) {
                document.cookie=key+'='+value+';'+'max-age='+days*24*60*60;
            }

需要注意的是,document.cookie不是简单的字符串操作.
举个栗子,如果当前document.cookie的值=’name=csdn; age=18’,
然后我们执行document.cookie=’name=hello’;
document.cookie的值=’name=hello; age=18’,而不是变为document.cookie=’name=hello’,我只能理解为document.cookie不是单纯的字符串,具体是什么不知道,求解答.

2.查询cookie

W3C

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
  }
return ""
}

个人比较喜欢这样写

function getCookie(key){
                var arr=document.cookie.split(';');
                for(var i=0;i<arr.length;i++){
                    var arr1=arr[i].split('=');
                    if(arr1[0]==key)
                        return arr1[1];
                }
                return '';
            }

3.删除cookie

function delCookie(key){
                setCookie(key,'',0);
            }

参考文章:
http://blog.csdn.net/helloliuhai/article/details/18351439
http://www.w3school.com.cn/js/js_cookies.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值