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 相关文章推荐
jMessageBox 基于jQuery的窗口插件
Dec 09 Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
JS简单实现点击复制链接的方法
Aug 03 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
Jun 28 Javascript
webpack自动打包和热更新的实现方法
Jun 24 Javascript
vue跳转方式(打开新页面)及传参操作示例
Jan 26 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
Vue中的this.$options.data()和this.$data用法说明
Jul 26 Javascript
Javascript中的解构赋值语法详解
Apr 02 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
php生成与读取excel文件
2016/10/14 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
jquery实现数字输入框
2017/02/22 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
js中less常用的方法小结
2017/08/09 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
python实现百度语音识别api
2018/04/10 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
庆元旦活动总结
2014/07/09 职场文书
国博复兴之路观后感
2015/06/02 职场文书
爱国主义影片观后感
2015/06/18 职场文书