• JS读写客户端Cookies


    把前一陈子写的一段JS发出来,代码很简单,但希望对一些人有帮助。少写几行重复的代码

    CookiesHelper.js

    //Author:fengxu
    //Date:2009-08-18
    //Summary:读写Cookies
    //
    CookiesHelper = function() {
    var d = new Date()
    d.setDate(d.getDate() + 15);
    this.expriceDate = d.toUTCString();             //设置过期时间
    this.unDesCodeValue = document.cookie;          //未解码的Cookies值
    this.cookies = new Array();  //cookies对象
    if (this.unDesCodeValue != '' && this.unDesCodeValue != null) {
    var tempArr = this.unDesCodeValue.split(';'); //将cookies对象分开
    for (var i = 0; i < tempArr.length; i++) {
    var arrCookItem;
    if (tempArr[i].split('=').length > 2)        //如果cookie项有子cookies值,暂时不支持asp.net的写法Response.Cookies["Name"]["Key"]
    {
    //                arrCookItem = new Array();
    //                arrCookItem.push(tempArr[i].substring(0, tempArr[i].indexOf('=') - 1));
    //                arrCookItem.push(tempArr[i].substring(tempArr[i].indexOf('='), tempArr[i.length-1]).split('&'))
    //                arrCookItem[0] = decodeURIComponent(arrCookItem[0]);  //解码名称和值
    }
    else {
    arrCookItem = tempArr[i].split('=');   //将cookies名称和值分开
    arrCookItem[0] = decodeURIComponent(arrCookItem[0]);  //解码名称和值
    arrCookItem[1] = decodeURIComponent(arrCookItem[1]);
    this.cookies.push(arrCookItem);        //得到一个二维数组,对应cookies值
    }
    }
    }
    }
    //取cookies值
    CookiesHelper.prototype.GetCookieValue = function(cookName) {
    if (null == this.cookies) return '';
    var name;
    var value;
    var arrTemp;
    for (var i = 0; i < this.cookies.length; i++) {
    arrTemp = this.cookies[i];
    name = arrTemp[0];
    value = arrTemp[1];
    if (name == cookName)
    return value;
    }
    return null;
    }
    CookiesHelper.prototype.SetCookiesValue = function(cookName, cookValue) {
    var name;
    var value;
    var arrTemp;
    var isAdd = true;  //判断是否是添加新Cookies值
    for (var i = 0; i < this.cookies.length; i++) {
    arrTemp = this.cookies[i];
    name = arrTemp[0];
    value = arrTemp[1];
    if (name == cookName) {
    this.cookies[i][1] = cookValue;     //如果有则修改;
    document.cookie = cookName + '=' + encodeURIComponent(cookValue) + "; expires=" + this.expriceDate + "";
    isAdd = false;
    break;
    }
    }
    if (isAdd) {
    var newCookie = new Array();            //如果没有则添加;
    newCookie.push(cookName);
    newCookie.push(cookValue);
    this.cookies.push(newCookie);
    document.cookie = cookName + '=' + encodeURIComponent(cookValue) + "; expires=" + this.expriceDate + "";
    }
    }
    CookiesHelper.prototype.AddCookie = function(cookName, cookValue) {
    this.SetCookiesValue(cookName, cookValue);
    }
    //删除cookie
    CookiesHelper.prototype.DeleteCookie = function(cookieName) {
    if (this.cookies.length == 0)
    return;
    else {
    var d = new Date();
    d.setDate(d.getDate() - 1);
    var realCookies = '';
    var documentCookie = new Array();       //删除时要更新数组
    for (var i = 0; i < this.cookies.length; i++) {
    arrTemp = this.cookies[i];
    name = arrTemp[0];
    value = arrTemp[1];
    if (name.replace(/\s/g,'') == (cookieName)) {
    realCookies += name + '=' + encodeURIComponent(value) + "; expires=" + d.toGMTString() + "";
    break;
    }
    else {
    var tempArr = new Array();
    tempArr.push(name);
    tempArr.push(value);
    documentCookie.push(tempArr);
    //                realCookies += encodeURIComponent(name) + '=';
    //                realCookies += encodeURIComponent(value);
    //                realCookies += "; expires=" + this.expriceDate + ";";
    }
    }
    this.cookies = documentCookie;
    alert(realCookies);
    document.cookie = realCookies;
    }
    }
    var cookieHelper = new CookiesHelper();
    CookiesHelper.prototype.DeCodeCookieValue = function() {
    //    this.desCodeValue = decodeURIComponent(this.cookies)
    }
    //CookiesHelper.registerClass('CookiesHelper');
    //if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
    使用方法:
        <script language="javascript" type="text/javascript">
    //写CookieS
    cookieHelper.SetCookiesValue(CookieName,CookieValue);
    //读Cookies
    var cookieValue = cookieHelper.GetCookieValue(CookieName);
    //删除
    cookieHelper.DeleteCookie(CookieName);
    </script>

    曾经年少多少事 而今皆付谈笑中!

  • 相关阅读:
    算法时间复杂度
    C#箴言:定义常量的两种方法
    Java对象池示例
    一种轻量级对象池的设计与实现
    游戏功能逻辑优化
    c#二维数组传递与拷贝
    一个高效的A-star寻路算法(八方向)(
    3DMAX 烘培技术
    Unity3D脚本生命周期
    Unity 组件
  • 原文地址:https://www.cnblogs.com/xuf22/p/1665367.html
Copyright © 2020-2023  润新知