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 相关文章推荐
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
Dec 27 Javascript
JavaScript 图像动画的小demo
May 23 Javascript
JS生成随机字符串的多种方法
Jun 10 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 Javascript
mpvue 如何使用腾讯视频插件的方法
Jul 16 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 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
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
php实现分页工具类分享
2014/01/09 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
九种原生js动画效果
2015/11/11 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
Python的标准模块包json详解
2017/03/13 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
Python实现最大子序和的方法示例
2019/07/05 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
使用索引有什么好处
2016/07/27 面试题
资源工程专业毕业生求职信
2014/02/27 职场文书
人力资源总监工作说明
2014/03/03 职场文书
检举信的格式及范文
2014/04/04 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android