javascript针对cookie的基本操作实例详解


Posted in Javascript onNovember 30, 2015

本文实例讲述了javascript针对cookie的基本操作。分享给大家供大家参考,具体如下:

js被C#、JAVA等开发者视为声名狼藉的附属编程语言是有道理的,比如说,对cookie的操作。js就没有一套类似C#的现成处理方案,而只能由你自己去完成。下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。

cookie的常见操作分析:

(1)设置cookie 包括了添加和修改功能,事实上如果原有cookie 名称已经存在,那么添加此cookie 就相当于修改了此cookie。在设置cookie 的时候可能还会有一些可选项,用于指cookie  的声明周期、访问路径以及访问域和安全性等等。为了让cookie 中能够存储中文,该方法中还需要对存储的值进行编码。

(2)取一个cookie的值,该方法接收cookie 名称为参数,返回该cookie 的值。因为在存储该值的时候已经进行了编码,所以取值时应该能自动解码,然后返回(这里其实可以自己设置返回什么,而不单单是"取一个值"而已)。

(3)删除一个cookie,删除cookie 只需将一个cookie 的过期事件设置为过去的一个时间即可,它接收一个cookie 的名称为参数,从而删除此cookie(我的实现还将cookie名称设置为空,这是考虑到今后可能会有多个cookie要设置的时候,名称发生冲突的情况)。

(4)其他 (这里让读者自己去考虑其他的操作,不赘述了。)

好的,你一定又猜到我要说什么了,对头,code is cheap.看代码:

/* 对cookie的操作 */
//创建
var Cookie = new Object();
//设置(修改)属性和方法
Cookie.setCookie = function(sName, sValue, oExpires, sPath, sDomain, bSecure) {
  var sCookie = sName + "=" + escape(sValue); // 名称和值
  if (oExpires) {
    sCookie += "; expires=" + oExpires.toGMTString(); // 过期时间
  }
  if (sPath) {
    sCookie += "; path=" + sPath; // 访问路径
  }
  if (sDomain) {
    sCookie += "; domain=" + sDomain; // 访问路径
  }
  if (bSecure) {
    sCookie += "; true"; // 安全性
  }
  document.cookie = sCookie;
}
//获取
Cookie.getCookie = function(sName) {
  var cookieArray = document.cookie.split(";"); //得到分割的名值对
  var tempCookie = new Object();
  for (var i = 0; i < cookieArray.length; i++) {
    var tempArr = cookieArray[i].split("="); //将名称和值分开
    if (tempArr[0] == sName) { //如果是指定的cookie,返回它的值
      return unescape(tempArr[1]);
    }
  }
  return "There's no such a cookie name!";
}
//删除
Cookie.deleteCookie = function(sName, sPath, sDomain) {
  var sCookie = sName + "=; expires=" + (new Date(0)).toGMTString(); // 设置名称为空,过期时间为0,也可以设置过期时间为负数 (var sCookie = sName + "=; expires=-1"; )
  if (sPath) {
    sCookie += "; path=" + sPath;
  }
  if (sDomain) {
    sCookie += "; domain=" + sDomain;
  }
  document.cookie = sCookie;
}
function test() {
  Cookie.setCookie("test", "cookieTest");
  alert(Cookie.getCookie("test"));
  alert(Cookie.getCookie("test2")); // ???
  Cookie.deleteCookie("test");
  alert(Cookie.getCookie("test"));
}

补充:javascript 操作cookie类

String.prototype.Trim = function()
{
  return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}
function JSCookie()
{
  this.GetCookie = function(key)
  {
    var cookie = document.cookie;
    var cookieArray = cookie.split(';');
    var getvalue = "";
    for(var i = 0;i<cookieArray.length;i++)
    {
      if(cookieArray[i].Trim().substr(0,key.length) == key)
      {
        getvalue = cookieArray[i].Trim().substr(key.length + 1);
        break;
      }
    }
    return getvalue;
  };
  this.GetChild = function(cookiekey,childkey)
  {
    var child = this.GetCookie(cookiekey);
    var childs = child.split('&');
    var getvalue = "";
    for(var i = 0;i < childs.length;i++)
    {
      if(childs[i].Trim().substr(0,childkey.length) == childkey)
      {
        getvalue = childs[i].Trim().substr(childkey.length + 1);
        break;
      }
    }
    return getvalue;
  };
  this.SetCookie = function(key,value,expire,domain,path)
  {
    var cookie = "";
    if(key != null && value != null)
      cookie += key + "=" + value + ";";
    if(expire != null)
      cookie += "expires=" + expire.toGMTString() + ";";
    if(domain != null)
      cookie += "domain=" + domain + ";";
    if(path != null)
      cookie += "path=" + path + ";";
    document.cookie = cookie;
  };
  this.Expire = function(key)
  {
    expire_time = new Date();
    expire_time.setFullYear(expire_time.getFullYear() - 1);
    var cookie = " " + key + "=e;expires=" + expire_time + ";"
    document.cookie = cookie;
  }
}

用法:

一、设置cookie

var cookie = new JSCookie();
//普通设置
cookie .SetCookie("key1","val1");
//过期时间为一年
var expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() + 1);
cookie .SetCookie("key2","val2",expire_time);
//设置域及路径,带过期时间
cookie .SetCookie("key3","val3",expire_time,".cnblogs.com","/");
//设置带子键的cookie,子键分别是k1,k2,k3
cookie .SetCookie("key4","k1=1&k2=2&k3=3");

二、读取cookie

//简单获取
cookie .GetCookie("key1");
cookie .GetCookie("key2");
cookie .GetCookie("key3");
cookie .GetCookie("key4");
//获取key4的子键k1值
cookie .GetChild("key4","k1");

三、删除

cookie .Expire("key1");
cookie .Expire("key2");
cookie .Expire("key3");
cookie .Expire("key4");

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
学习YUI.Ext 第三天
Mar 10 Javascript
Ruffy javascript 学习笔记
Nov 30 Javascript
基于jQuery实现点击同时更改两个iframe的网址
Jul 01 Javascript
javascript 上下banner替换具体实现
Nov 14 Javascript
处理文本部分内容的TextRange对象应用实例
Jul 29 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
Javascript验证方法大全
Sep 21 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
原生JS实现在线问卷调查投票特效
Jan 03 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
js常用正则表达式集锦
May 17 Javascript
Vue深入理解插槽slot的使用
Aug 05 Vue.js
javascript闭包(Closure)用法实例简析
Nov 30 #Javascript
详解JavaScript的流程控制语句
Nov 30 #Javascript
详解JavaScript的表达式与运算符
Nov 30 #Javascript
Bootstrap每天必学之进度条
Nov 30 #Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 #Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 #Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 #Javascript
You might like
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP和XSS跨站攻击的防范
2007/04/17 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
javascript preload&amp;lazy load
2010/05/13 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python 初始化多维数组代码
2008/09/06 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
自动化职业生涯规划书范文
2014/01/03 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
新文化运动的基本口号
2014/06/21 职场文书
美术学专业求职信
2014/07/23 职场文书
先进党组织事迹材料
2014/12/26 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
简爱电影观后感
2015/06/10 职场文书