• cookie


    一、cookie基础

    1、什么是cookie
    •页面用来保存信息
    –比如:自动登录、记住用户名
     
    2、cookie的特性
    –同一个网站中所有页面共享一套cookie
    –数量、大小有限 一般以k为单位,比如4k.5k
    –过期时间 ,使用js来控制
    -存在客户端,用户计算机的文件,敏感重要的东西不要放到cookie
    -只有在服务器环境下运行
     
    •JS中使用cookie
    document.cookie='blue';
    alert(document.cookie);

    可以运行火狐浏览器查看cookie信息,如果不指定过期时间,默认到到浏览器关闭为止

    指定过期时间如下:

    var oDate=new Date();
    
    oDate.setDate(oDate.getDate()+30);
    
    document.cookie="user=blue;expires="+oDate;
    document.cookie="pass=123";
    
    alert(document.cookie);

    3.查看:document.cookie

    二、使用cookie
    cookie的使用
    •设置cookie
    function setCookie(name, value, iDay)
    {
        var oDate=new Date();
        
        oDate.setDate(oDate.getDate()+iDay);
        
        document.cookie=name+'='+value+';expires='+oDate;
    }

    –格式:名字=值

    –不会覆盖
    –过期时间:expires=时间
    »日期对象的使用
    –封装函数
     
    •读取cookie
    –字符串分割
    function getCookie(name)
    {
        //'username=abc; password=123456; aaa=123; bbb=4r4er'
        var arr=document.cookie.split('; ');
        var i=0;
        
        //arr->['username=abc', 'password=123456', ...]
        
        for(i=0;i<arr.length;i++)
        {
            //arr2->['username', 'abc']
            var arr2=arr[i].split('=');
            
            if(arr2[0]==name)
            {
                return arr2[1];
            }
        }
        
        return '';
    }
    •删除cookie
    –已经过期
    function removeCookie(name)
    {
        setCookie(name, '1', -1);
    }
    cookie的使用
    •例子
    –用cookie记录上一次Div的位置 cookie结合拖拽
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <style>
    #div1 {width:100px; height:100px; background:red; position:absolute;}
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    function setCookie(name, value, iDay)
    {
        var oDate=new Date();
        
        oDate.setDate(oDate.getDate()+iDay);
        
        document.cookie=name+'='+value+';expires='+oDate;
    }
    
    function getCookie(name)
    {
        //'username=abc; password=123456; aaa=123; bbb=4r4er'
        var arr=document.cookie.split('; ');
        var i=0;
        
        //arr->['username=abc', 'password=123456', ...]
        
        for(i=0;i<arr.length;i++)
        {
            //arr2->['username', 'abc']
            var arr2=arr[i].split('=');
            
            if(arr2[0]==name)
            {
                return arr2[1];
            }
        }
        
        return '';
    }
    
    function removeCookie(name)
    {
        setCookie(name, '1', -1);
    }
    
    window.onload=function ()
    {
        var oDiv=document.getElementById('div1');
        var disX=0;
        var disY=0;
        
        var x=getCookie('x');
        var y=getCookie('y');
        
        if(x)
        {
            oDiv.style.left=x+'px';
            oDiv.style.top=y+'px';
        }
        
        oDiv.onmousedown=function (ev)
        {
            var oEvent=ev||event;
            
            disX=oEvent.clientX-oDiv.offsetLeft;
            disY=oEvent.clientY-oDiv.offsetTop;
            
            document.onmousemove=function (ev)
            {
                var oEvent=ev||event;
                
                oDiv.style.left=oEvent.clientX-disX+'px';
                oDiv.style.top=oEvent.clientY-disY+'px';
            };
            
            document.onmouseup=function ()
            {
                document.onmousemove=null;
                document.onmouseup=null;
                
                setCookie('x', oDiv.offsetLeft, 5);
                setCookie('y', oDiv.offsetTop, 5);
            };
            
            return false;
        };
    };
    </script>
    </head>
    
    <body>
    <div id="div1">
    </div>
    </body>
    </html>

    »鼠标抬起——记录位置

    »window.onload——读取位置
    –用cookie记录上次登录的用户名
    »提交时——记录用户名
    »window.onload——读取用户名
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    function setCookie(name, value, iDay)
    {
        var oDate=new Date();
        
        oDate.setDate(oDate.getDate()+iDay);
        
        document.cookie=name+'='+value+';expires='+oDate;
    }
    
    function getCookie(name)
    {
        //'username=abc; password=123456; aaa=123; bbb=4r4er'
        var arr=document.cookie.split('; ');
        var i=0;
        
        //arr->['username=abc', 'password=123456', ...]
        
        for(i=0;i<arr.length;i++)
        {
            //arr2->['username', 'abc']
            var arr2=arr[i].split('=');
            
            if(arr2[0]==name)
            {
                return arr2[1];
            }
        }
        
        return '';
    }
    
    function removeCookie(name)
    {
        setCookie(name, '1', -1);
    }
    
    window.onload=function ()
    {
        var oForm=document.getElementById('form1');
        var oUser=document.getElementsByName('user')[0];
        var oBtnClear=document.getElementsByTagName('a')[0];
        
        oForm.onsubmit=function ()
        {
            setCookie('user', oUser.value, 30);
        };
        
        oUser.value=getCookie('user');
        
        oBtnClear.onclick=function ()
        {
            removeCookie('user');
            oUser.value='';
        };
    };
    </script>
    </head>
    
    <body>
    <form id="form1" action="http://www.baidu.com/">
        用户名:<input type="text" name="user" />
        密码:<input type="password" name="pass" />
        <input type="submit" value="登录" />
        <a href="javascript:;">清除记录</a>
    </form>
    </body>
    </html>
     
    总结:

    1. 什么是 cookie、cookie 特性
    2. js 中的 cookie:设置 document.cookie
    3. cookie 不会覆盖
    4. cookie 过期时间:expires、setDate
    5. 封装设置 cookie 函数
    6. 封装获取 cookie 函数
    7. 封装删除 cookie 函数
    8. cookie 接合拖拽实例
    9. cookie 记录用户名实例

  • 相关阅读:
    InnoDB引擎面面观
    [读史思考]为何此大神可以同时进入文庙和武庙?
    [源码解析] 当 Java Stream 遇见 Flink
    Alink漫谈(十八) :源码解析 之 多列字符串编码MultiStringIndexer
    [源码解析] Flink UDAF 背后做了什么
    [业界方案] ClickHouse业界解决方案学习笔记
    Istio Routing 实践掌握virtualservice/gateway/destinationrule/AB版本发布/金丝雀发布
    树立个人品牌意识:从背景调查谈谈职业口碑的重要性
    Istio 生产环境用户流量接入方案
    故障管理:故障应急和故障复盘
  • 原文地址:https://www.cnblogs.com/eveblog/p/4503681.html
Copyright © 2020-2023  润新知