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 相关文章推荐
计算新浪Weibo消息长度(还可以输入119字)
Jul 02 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
Ionic2开发环境搭建教程
Aug 20 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
Jun 17 Javascript
js + css实现标签内容切换功能(实例讲解)
Oct 09 Javascript
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
Jan 19 Javascript
js中实例与对象的区别讲解
Jan 21 Javascript
详解使用uni-app开发微信小程序之登录模块
May 09 Javascript
angular异步验证防抖踩坑实录
Dec 01 Javascript
jquery简易手风琴插件的封装
Oct 13 jQuery
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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
使用PHP计算两个路径的相对路径
2013/06/14 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
php生成QRcode实例
2014/09/22 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
python为tornado添加recaptcha验证码功能
2014/02/26 Python
Python内置函数的用法实例教程
2014/09/08 Python
用实例分析Python中method的参数传递过程
2015/04/02 Python
Django入门使用示例
2017/12/12 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Python气泡提示与标签的实现
2020/04/01 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
《我要的是葫芦》教学反思
2014/02/23 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis