• 学习笔记: JavaScript/JQuery 的cookie操作


    转自:http://blog.csdn.net/barryhappy/archive/2011/04/27/6367994.aspx

     

     

     

     

    cookie是网页存储到用户硬盘上的一小段信息。最常见的作用是判断用户是否登录、保存偏好设置等。我用到这个是写扫雷时,需要用cookie保存用户的设置,如行、列等。功能已具,笔而记之。

     

     

    cookie具有特定的格式——

            cookiename=cookievalue; expires=epirationDateGMT; path=URL; domin=siteDomin; secure: boolean

     

    可以看出由分号隔开的几部分——第一部分是cookie的名称和值,这是每一个cookie中必须有的。其余部分都是可选的:第二部分是cookie的过期时间,到了这个时间浏览器会自动将其删除,如果没有这部分则默认是在关闭浏览器时将其删除。第三部分允许在cookie中存储一个URL,第四部分存储一个域值(这个基本不用管,浏览器会将当前网页的地址存入),第五部分是一个布尔值,为ture时要求传输一个安全协议,如https。

     

    一般我们只需要讨论第一部分和第二部分,即值和过期时间

     

    javascript的写cookie操作示例:

     

    1. var expireDate = new Date(); // 获取当前时间   
    2. expireDate.setDate(expireDate.getDate()+1); //设置日期为一天后   
    3. var cookieValue = "hello";   
    4. document.cookie = "aCookie=" + cookieValue +"; expires="+expireDate.toGMTString();//写cookie   
    5. alert(document.cookie);  

    这段代码执行完之后就会创建一个cookie,名称为aCookie,值为"hello",过期时间为一天后。最后一句会打印出这个cookie的内容

    可以在谷歌浏览器中查看到它的信息:(谷歌浏览器不支持本地网页文件的cookie,要用它操作cookie必须要放到服务器上!!早先不知道这个,Chrome中没出想要的结果,我费劲心思纠结好久好久……囧
         名称: aCookie 
         内容: hello 
         域: 127.0.0.1 
         路径: /Test2 
         发送: 各种连接 
         可访问脚本的 Cookie: 是 
         已创建: 2011年4月27日星期三下午8:37:12 
         过期时间: 2011年4月28日星期四下午8:37:12

     

    一个页面是可以有多个cookie的,它们会被存放在同一个文件中,所以形如 aCookie=”Hello”; anotherCookie=”world” 是一个合法的cookie

    cookie本质上是一段字符串,所以可以用任何操作字符串的方法去操作它, 对于上面一个cookie,可以用代码:var string = document.cookie.split("=")[1].split(";")[0]; 获取aCookie的值"hello”.

     

    当只设置一个cookie时,存取操作都不复杂,但是当一个页面中存在多个cookie时,这个操作就会变的优点复杂了,如上面得到"hello”的字符串操作就已经略显复杂了。

    这时候我们可以借助JQuery来实现更优雅的操作。

     

    JQuery的一个小插件~只有1K多的,名称即为Cookie,包含且只包含如下代码——

     

    1. jQuery.cookie = function(name, value, options) {   
    2.     if (typeof value != 'undefined') { // name and value given, set cookie  
    3.         options = options || {};  
    4.         if (value === null) {  
    5.             value = '';  
    6.             options.expires = -1;  
    7.         }  
    8.         var expires = '';  
    9.         if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {  
    10.             var date;  
    11.             if (typeof options.expires == 'number') {  
    12.                 date = new Date();  
    13.                 date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));  
    14.             } else {  
    15.                 date = options.expires;  
    16.             }  
    17.             expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE  
    18.         }  
    19.         // CAUTION: Needed to parenthesize options.path and options.domain  
    20.         // in the following expressions, otherwise they evaluate to undefined  
    21.         // in the packed version for some reason...  
    22.         var path = options.path ? '; path=' + (options.path) : '';  
    23.         var domain = options.domain ? '; domain=' + (options.domain) : '';  
    24.         var secure = options.secure ? '; secure' : '';    
    25.         document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');  
    26.     } else { // only name given, get cookie  
    27.         var cookieValue = null;  
    28.         if (document.cookie && document.cookie != '') {  
    29.             var cookies = document.cookie.split(';');  
    30.             for (var i = 0; i < cookies.length; i++) {  
    31.                 var cookie = jQuery.trim(cookies[i]);  
    32.                 // Does this cookie string begin with the name we want?  
    33.                 if (cookie.substring(0, name.length + 1) == (name + '=')) {  
    34.                     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));  
    35.                     break;  
    36.                 }  
    37.             }  
    38.         }  
    39.         return cookieValue;  
    40.     }  
    41. };  

     

    只要将这段代码加载之后,便可以使用它的方法了(加载的方法不用多说了吧?最简单的是你直接把它拷到你所用的jQuery中;或者把这段单独存为一个js文件,在html文件中引用……)。

    很方便的操作,用法大致如下:

     

     

    1. $.cookie('the_cookie'); //读取Cookie值  
    2. $.cookie(’the_cookie’, ‘the_value’); //设置cookie的值  
    3. $.cookie(’the_cookie’, ‘the_value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});//新建一个cookie 包括有效期 路径 域名等  
    4. $.cookie(’the_cookie’, ‘the_value’); //新建cookie  
    5. $.cookie(’the_cookie’, null); //删除一个cookie  

     

    其实可以看到,这个插件中只有一个方法,而用参数的不同来实现不同的操作。

     

    一个示例——

      1. /* 设开始时页面不存在cookie*/  
      2. padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; border-top-style: none; border-right-style: none; border-bottom-style:
  • 相关阅读:
    html5 语义
    HTML Web Workers
    创建删除元素appendChild,removeChild,createElement,insertBefore
    getPos封装
    getPos,offsetTop
    HTML 中有用的字符实体
    ellipsis
    HTML 统一资源定位器
    width,clientWidth,offsetWidth
    .offsetLeft,.offsetTop
  • 原文地址:https://www.cnblogs.com/koleyang/p/4775792.html
Copyright © 2020-2023  润新知