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 相关文章推荐
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
js实现的复制兼容chrome和IE
Apr 03 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
Aug 22 Javascript
jQuery图片左右滚动代码 有左右按钮实例
Jun 20 Javascript
微信小程序商城项目之购物数量加减(3)
Apr 17 Javascript
js中变量的连续赋值(实例讲解)
Jul 08 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
Three.js实现绘制字体模型示例代码
Sep 26 Javascript
浅谈node.js 命令行工具(cli)
May 10 Javascript
微信小程序使用前置摄像头拍照
Oct 22 Javascript
JS数据类型分类及常用判断方法
Nov 19 Javascript
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的多进程编程方法
2015/08/18 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
Prototype Selector对象学习
2009/07/23 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
JS实现多选框的操作
2020/06/24 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
python模块restful使用方法实例
2013/12/10 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python绘制规则网络图形实例
2019/12/09 Python
python中有关时间日期格式转换问题
2019/12/25 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
个人委托函范文
2015/01/29 职场文书
小学元宵节活动总结
2015/02/06 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
Python Numpy库的超详细教程
2022/04/06 Python
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
Python编写冷笑话生成器
2022/04/20 Python
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL