js中的cookie的读写操作示例详解


Posted in Javascript onApril 17, 2014

cookie是一小段信息,以键/值对的信息保存在计算机硬盘上的字符串, cookie存储容量大概在4kb,不同的浏览器厂家对cookie大小的限制有微微的差异;cookie主要的本质是“识别”,通过识别来做一些事情;cookie 也是无法从你的硬盘取得任何其它数据,传送电脑病毒或者获取你的电子邮件地址。cookie是有有效期的,cookie的默认有效期是从cookie生成至浏览器关闭,也可以通过设置cookie的有效期来指定其失效日期;用户也可以禁止cookie也可以手动删除cookie。

cookie是字符串而且还是一个特定格式的文本字符串

格式:cookieName=cookieValue;expires=expiresDate;path=URLpath;domain=siteDomain//cookie名称,失效日期,储存URL,储存域值;

cookie的创建方式

设置cookie我们一般都封装成一个函数:

function addCookie(sName,sValue,day) { 
var expireDate = new Date(); 
expireDate.setDate(expireDate.getDate()+day);; 
//设置失效时间 
document.cookie = escape(sName) + '=' + escape(sValue) +';expires=' + expireDate.toGMTString();6 //escape()汉字转成unicode编码,toGMTString() 把日期对象转成字符串 
}

读取cookie

添加了cookie之后,我们如何来获取它呢,很简单:

function getCookies() { 
var showAllCookie = ''; 
if(!document.cookie == ''){ 
var arrCookie = document.cookie.split('; '); 
//用spilt('; ')切割所有cookie保存在数组arrCookie中 
var arrLength = arrCookie.length; 
for(var i=0; i<arrLength; i++) { 
showAllCookie += 'c_name:' + unescape(arrCookie[i].split('=')[0]) + 'c_value:' + unescape(arrCookie[i].split('=')[1]) + '<br>' 9 } 
return showAllCookie; 
} 
}

cookie有有效期可自动删除,也可以通过设置其失效日期来立即删除

一样很简单,继续:

function removeCookie() { 
if(document.cookie != '' && confirm('你想清理所有cookie吗?')) { 
var arrCookie = document.cookie.split('; '); 
var arrLength = arrCookie.length; 
var expireDate = new Date(); 
expireDate.setDate(expireDate.getDate()-1); 
for(var i=0; i<arrLength; i++) { 
var str = arrCookie[i].split('=')[0]; 
document.cookie = str+ '=' + ';expires=' + expireDate.toGMTString(); 
} 
} 
}

我们已经知道如何创建、获取、删除cookie了,现在也该运用cookie了

下面我们用cookie做一个简单的计时器:

var cookieCount = {}; 
cookieCount.count = function () { 
var count = parseInt(this.getCount('myCount')); 
count++; 
document.cookie = 'myCount=' + count + ''; 
alert('第'+count+'访问'); 
} 
cookieCount.setCount= function () { 
//首先得创建一个名为myCount的cookie 
var expireDate = new Date(); 
expireDate.setDate(expireDate.getDate()+1); 
document.cookie = 'myCount=' + '0' +';expires=' + expireDate.toGMTString(); 
} 
cookieCount.getCount = function (countName) { 
//获取名为计数cookie,为其加1 
var arrCookie = document.cookie.split('; '); 
var arrLength = arrCookie.length; 
var ini = true; 
for(var i=0; i<arrLength; i++) { 
if(countName == arrCookie[i].split('=')[0]){ 
return parseInt(arrCookie[i].split('=')[1]); 
break; 
}else{ 
ini = false; 
} 
} 
if(ini == false)this.setCount(); 
return 0; 
} 
cookieCount.count();

cookie的路径

本文开头的时候提到cookie的路径设置 cookie的路径:path=URL;

如果在域名的子目录创建的cookie,域名及其他同级目录或上级目录是访问不到这个cookie的,而通过设置路径的好处就是可以上域名以及域名的子类目录都可以访问到,如下:

document.cookie='cookieName=cookieValue;expires=expireDate;path=/'。

cookie域

设置域:domain=siteDomain

这个主要用在同域的情况下共享一个cookie,例如 "www.taobao.com" 与 "ued.taobao.com" 两者是共享一个域名"taobao.com",我们如果想让 "www.taobao.com" 下的cookie被 "ued.taobao.com" 访问,那么就需要把path属性设置为 "/",并且设置 cookie 的domain-->document.cookie='cookieName=cookieValue;expires=expireDate;path=/;domain=taobao.com'。

随着web的不断发展项目中的需要,HTML5提供了两个属性window.sessionStorage和window.localStorage,并携带了setItem,getItem,removeItem,clear等方法,使得本地存储数据的方法操作更为简单便利

Javascript 相关文章推荐
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
Jan 11 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
js实现上传图片及时预览
May 07 Javascript
vue实现微信分享功能
Nov 28 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
Postman内建变量常用方法实例解析
Jul 28 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 Javascript
如何将JavaScript将数组转为树形结构
Jun 02 Javascript
巧用replace将文字表情替换为图片
Apr 17 #Javascript
JavaScript事件委托的技术原理探讨示例
Apr 17 #Javascript
JS实现div居中示例
Apr 17 #Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 #Javascript
js调用后台、后台调用前台等方法总结
Apr 17 #Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 #Javascript
你可能不知道的JavaScript的new Function()方法
Apr 17 #Javascript
You might like
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Python3.5运算符操作实例详解
2019/04/25 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
基于python 取余问题(%)详解
2020/06/03 Python
python如何快速生成时间戳
2020/07/21 Python
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
一道Delphi面试题
2016/10/28 面试题
大学生工作求职信
2014/06/23 职场文书
会议欢迎标语
2014/06/30 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
酒会邀请函
2015/01/31 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书