【JS】【笔记】JavaScript入门经典(第5版)第10章 JavaScript和cookie

来源:互联网 发布:mac口红whirl 编辑:程序博客网 时间:2024/04/29 15:06
本文为个人读书笔记,大部分为书中内容摘要。仅供记录和分享学习中遇到的需要留意的问题,如有相关版权问题请及时通知作者。

概述
     http是一种无状态协议,不保存任何信息。这给在浏览器回话期间维持某种连续性带来了困难,cookie是解决这个问题的一个途径。
     cookie本身是一些短小的信息串,能够由页面保存在用户的计算机上,然后可以被其他页面读取。

cookie的局限
     通常每个域名20个,每个域4KB,有很多情况会导致其意外消失

document.cookie属性
     JavaScript使用document对象的cookie属性存储和获取cookie。
     每个cookie基本上就是一个由成对的名称和值组成的字符串:username=sam
     页面加载到浏览器里时,浏览器会收集与页面相关的全部cookie,放到类字符串的document.cookie属性里。在这个属性里,每个cookie以分号分隔。
     
数据的编码和解码
     某些字符不能再cookie里使用,在把数据存入cookie前需要编码。
     escape()编码     unescape()解码
     escape()会把字符串里任何非ASC II字符转换为相应的2位或4位十六进制格式。

cookie组成
     cookie规范:RFC6265 2011
     cookiename,cookievalue cookie字符串里看到的名称与值
     domain:可选,向浏览器指明cookie属于哪个域,默认是设置cookie页面的所在域。
     path:指定可以使用cookie的目录,常用默认“/”,所有
     secure:可选,浏览器发送cookie给服务器时是否使用SLL安全标准
     expires:失效日期,以UTC事件表示。没有设置cookie的生命期就和当前浏览器会话一样长

编写cookie
     只要把包含所需属性的值赋予document.cookie
编写cookie的函数
     function createCookie(name,value,days,path,domain,secure){
     if(days){
          var date=new Date();
          date.setTime(date.getTime()+(days*24*60*60*1000));
          var expires=date.toGMTString();
     }
     else var expires="";
     cookieString=name+"="+escape(value);
     if(expires) cookieString+=";expires="+expires;
     if(path) cookieString+=";path="+excape(path);
     if(domain) cookieString+=";domain="+escape(domain);
     if(secure) cookieString+=";secure";
     document.cookie=cookieString;
}

读取cookie
     1、split()
          var crumbs=document.cookie.split(‘;’);
     2、indexof,substring
          function getCookie(name){
     var nameEquals=name+"=";
     var crumbs=document.cookie.split(';');
     for(var i=0;i<crumbs.length;i++){
          var crumb=crumbs[i];
          if(crumb.indexOf(nameEquals)==0){
               return unescape(crumb.substring(nameEquals.length,crumb.length));
          }
     }
     return null;
}

删除cookie
     把它的失效日期设置为今天以前的日期
     function deleteCookie(name){
          createCookie(name,"",-1);
     }
     即使脚本把cookie删除,某些浏览器也会维持其至重新启动浏览器。如果cookie是否被删除是程序运行的条件,就应该使用getCookie来测试被删除的cookie,确保它确实不存在了。

在一个cookie里设置多个值
     把需要的值组成一个字符串,让它成为要保存在cookie里的值。
     var userdata="Sandy|26|A23679";
     createCookie("user",userdata);
     读取
     var myUser=getCookie("user");
     var myUserArray=myUer.split('|');
     var name=myUserArray[0];
     var age=myUserArray[1];




0 0
原创粉丝点击