• javascript cookie


    document.cookie存放了所有的cookie,世界上是一个字符串。形式类似下面的:

    fur=blue; food=biscuits; name=Cookie_monster;

    每个cookie有 ;分开。

    当创建cookie时,一定要确保名字和值不包括空格,逗号或分号。这些字符会在解析cookie时造成错误。在通过http头传输cookie的时候也会引起麻烦。要想在cookie中使用这些字符,最简单的方法是使用escape函数。这个函数会将所有的特殊字符转义。

    当读取cookie时,需要使用unescape解除转义。不要对=进行转义,它是作为cookie 的key value分隔符而存在的。

     写入cookie直接把cookie 赋值给document.cookie。它的行为方式有点特别。他原先的值不会被想普通的字符串那样被覆盖掉,而是在源字符串末尾加上新值。如果cookie名已经存在了,原有的值会被覆盖掉。

    创建cookie

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

    设定cookie过期时间

     过期时间加在cookie末尾,他也需要一个分号和其他的cookie字符串分开。然后接着是字符串expires= .时间必须用格林威治

    时间来指定。

    function getCookie(c_name)
    {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      }
    }

    或者:

    function getCookie(searchName)
    {
        var cookies=document.cookie.split(";");
        for(var i=0;i<cookies.length;i++)
        {
            var cookieCrumbs=cookies[i].split("=");
            var cookieName=cookieCrumbs[0];
            var cookieValue=cookieCrumbs[1];
            if(cookieName==searchName)
            {
                return cookieValue;
            }
        }
        return false;
    }

    使cookie只能通过特定的域和路径访问。

     在默认情况下,如果设置了一个cookie,那么这个cookie只能被这个域的其他页面访问,所以如果http://js.sitepoint.com的页面写入了cookie,那么Http://php.sitepoint.com的页面无法访问该cookie。为了允许sitepoint的所以子域访问该cookie,在cookie创建的时候需要指定域范围。在cookie后面加上";domain=domainNam"即可

     theCookie+=";domain=sitepoint.com";

    document.cookie=theCookie;

    现在这个cookie可以被sitepoint的所以子域的页面读取。包含sitepoint.com。

     l另外一个访问现在条件是,在默认情况下,cookie只能被同在当前目录中的其他页面或当前目录的子目录中页面访问。所以

    http://www.sitepoint.com/scripts/cookie_html 写了一个cookie,

    http://www.sitepoint.com/kermit.html 将无法访问。

     可以设定允许读取cookie目录的层级。只需在cookie字符串末尾加上一句";path=pathName"即可。

    theCookie+=";path=/";

    document.cookie=thecookie;

    在该cookie可以被根目录下的所有页面读取。那意味着这个网站的所有页面都可以读取该cookie。

    ppk写的3个函数:

    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000)); .//改成更好exdate.setDate(exdate.getDate() + exdays);
    var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    
    function readCookie(name) {
        var nameEQ = name + "=";
        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,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
    function eraseCookie(name) {
        createCookie(name,"",-1);
    }

    http://www.quirksmode.org/js/cookies.html

  • 相关阅读:
    cf1100 F. Ivan and Burgers
    cf 1033 D. Divisors
    LeetCode 17. 电话号码的字母组合
    LeetCode 491. 递增的子序列
    LeetCode 459.重复的子字符串
    LeetCode 504. 七进制数
    LeetCode 3.无重复字符的最长子串
    LeetCode 16.06. 最小差
    LeetCode 77. 组合
    LeetCode 611. 有效三角形个数
  • 原文地址:https://www.cnblogs.com/youxin/p/2698530.html
Copyright © 2020-2023  润新知