学习笔记: JavaScript/JQuery 的cookie操作
转自:http://blog.csdn.net/barryhappy/archive/2011/04/27/6367994.aspx
cookie是网页存储到用户硬盘上的一小段信息。最常见的作用是判断用户是否登录、保存偏好设置等。我用到这个是写扫雷时,需要用cookie保存用户的设置,如行、列等。功能已具,笔而记之。
cookie具有特定的格式——
cookiename=cookievalue; expires=epirationDateGMT; path=URL; domin=siteDomin; secure: boolean
可以看出由分号隔开的几部分——第一部分是cookie的名称和值,这是每一个cookie中必须有的。其余部分都是可选的:第二部分是cookie的过期时间,到了这个时间浏览器会自动将其删除,如果没有这部分则默认是在关闭浏览器时将其删除。第三部分允许在cookie中存储一个URL,第四部分存储一个域值(这个基本不用管,浏览器会将当前网页的地址存入),第五部分是一个布尔值,为ture时要求传输一个安全协议,如https。
一般我们只需要讨论第一部分和第二部分,即值和过期时间。
javascript的写cookie操作示例:
- var expireDate = new Date(); // 获取当前时间
- expireDate.setDate(expireDate.getDate()+1); //设置日期为一天后
- var cookieValue = "hello";
- document.cookie = "aCookie=" + cookieValue +"; expires="+expireDate.toGMTString();//写cookie
- alert(document.cookie);
这段代码执行完之后就会创建一个cookie,名称为aCookie,值为"hello",过期时间为一天后。最后一句会打印出这个cookie的内容
可以在谷歌浏览器中查看到它的信息:(谷歌浏览器不支持本地网页文件的cookie,要用它操作cookie必须要放到服务器上!!早先不知道这个,Chrome中没出想要的结果,我费劲心思纠结好久好久……囧)
名称: aCookie
内容: hello
域: 127.0.0.1
路径: /Test2
发送: 各种连接
可访问脚本的 Cookie: 是
已创建: 2011年4月27日星期三下午8:37:12
过期时间: 2011年4月28日星期四下午8:37:12
一个页面是可以有多个cookie的,它们会被存放在同一个文件中,所以形如 aCookie=”Hello”; anotherCookie=”world” 是一个合法的cookie
cookie本质上是一段字符串,所以可以用任何操作字符串的方法去操作它, 对于上面一个cookie,可以用代码:var string = document.cookie.split("=")[1].split(";")[0]; 获取aCookie的值"hello”.
当只设置一个cookie时,存取操作都不复杂,但是当一个页面中存在多个cookie时,这个操作就会变的优点复杂了,如上面得到"hello”的字符串操作就已经略显复杂了。
这时候我们可以借助JQuery来实现更优雅的操作。
JQuery的一个小插件~只有1K多的,名称即为Cookie,包含且只包含如下代码——
- jQuery.cookie = function(name, value, options) {
- if (typeof value != 'undefined') { // name and value given, set cookie
- options = options || {};
- if (value === null) {
- value = '';
- options.expires = -1;
- }
- var expires = '';
- if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
- var date;
- if (typeof options.expires == 'number') {
- date = new Date();
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
- } else {
- date = options.expires;
- }
- expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
- }
- // CAUTION: Needed to parenthesize options.path and options.domain
- // in the following expressions, otherwise they evaluate to undefined
- // in the packed version for some reason...
- var path = options.path ? '; path=' + (options.path) : '';
- var domain = options.domain ? '; domain=' + (options.domain) : '';
- var secure = options.secure ? '; secure' : '';
- document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
- } else { // only name given, get cookie
- var cookieValue = null;
- if (document.cookie && document.cookie != '') {
- var cookies = document.cookie.split(';');
- for (var i = 0; i < cookies.length; i++) {
- var cookie = jQuery.trim(cookies[i]);
- // Does this cookie string begin with the name we want?
- if (cookie.substring(0, name.length + 1) == (name + '=')) {
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
- break;
- }
- }
- }
- return cookieValue;
- }
- };
只要将这段代码加载之后,便可以使用它的方法了(加载的方法不用多说了吧?最简单的是你直接把它拷到你所用的jQuery中;或者把这段单独存为一个js文件,在html文件中引用……)。
很方便的操作,用法大致如下:
- $.cookie('the_cookie'); //读取Cookie值
- $.cookie(’the_cookie’, ‘the_value’); //设置cookie的值
- $.cookie(’the_cookie’, ‘the_value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});//新建一个cookie 包括有效期 路径 域名等
- $.cookie(’the_cookie’, ‘the_value’); //新建cookie
- $.cookie(’the_cookie’, null); //删除一个cookie
其实可以看到,这个插件中只有一个方法,而用参数的不同来实现不同的操作。
一个示例——
- /* 设开始时页面不存在cookie*/
- padding-top: 0px !important; padding-right: 3px !important;
padding-bottom: 0px !important; padding-left: 10px !important;
border-top-style: none; border-right-style: none; border-bottom-style:
学习笔记: JavaScript/JQuery 的cookie操作的更多相关文章
- jQuery学习笔记(二)jQuery中DOM操作
目录 DOM操作分类 jQuery中的各种DOM操作 查找节点 创建节点 删除节点 复制节点 替换节点 包裹节点 属性操作 样式操作 对HTML.文本和值的操作 遍历节点 CSS-DOM操作 小结 本 ...
- 【学习笔记】jQuery的基础学习
[学习笔记]jQuery的基础学习 新建 模板 小书匠 什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果 ...
- jQuery学习笔记之jQuery的Ajax(3)
jQuery学习笔记之jQuery的Ajax(3) 6.jQuery的Ajax插件 源码地址: https://github.com/iyun/jQueryDemo.git ------------- ...
- jQuery 学习笔记:jQuery 代码结构
jQuery 学习笔记:jQuery 代码结构 这是我学习 jQuery 过程中整理的笔记,这一部分主要包括 jQuery 的代码最外层的结构,写出来整理自己的学习成果,有错误欢迎指出. jQuery ...
- 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果
学习笔记---Javascript事件Event.IE浏览器下的拖拽效果 1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...
- X-Cart 学习笔记(四)常见操作
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...
- PHP与JavaScript下的Cookie操作
下面的例子列出几种情形交互场景,列出JS和php交互的方法.总结下,以免日后再为cookie问题困扰. setcookie.php getcookie.php 总结: php用自身函数读取php 的c ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- jquery学习笔记(二):DOM元素操作
内容来自[汇智网]jquery学习课程 2.1 元素属性操作 1.获取元素的属性 语法:attr(name) 参数name表示属性的名称 2.设置元素的属性 单个属性设置语法:attr(key,val ...
随机推荐
- Fix a Tree
Fix a Tree A tree is an undirected connected graph without cycles. Let's consider a rooted undirecte ...
- Java正则表达式细节1
Java中使用特定的字符类别比如 \d \s \w \d 匹配数字 \s 匹配空白字符 \w 匹配数字或者字符或者下划线[a-zA-Z0-9_] 比如使员正则的时候: 使用的是2个 斜杠 @Test ...
- Android网络开发之Volley--Volley自定义Request
1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...
- thin-provisioning-tools
公司我还用着squeeze,没这个包,下载编译:https://github.com/jthornber/thin-provisioning-tools.git
- highcharts 去掉打印和链接
1)去掉或更改图片右下角的链接 在highcharts.js文件中搜索credits字符串,找到如下的字符串, enabled:设置是否显示链接 text:设置链接显示的名称 href:设置链接的ur ...
- Smali文件语法解析
大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR打开鳄鱼小顽皮APK能看到的是(Google Play下载的完整版版 ...
- The 2014 ACM-ICPC Asia Mudanjiang Regional
继续复盘之前的Regional......出题者说这一套题太简单,对当时没有AK很不满......真是醉了,弱校没法活了 [A]签到题 [B]树结构,树的中心 [C]-_-/// [D]概率DP [E ...
- The 2014 ACM-ICPC Asia Regional Anshan Online
[A]无向图的双联通子图计数.DP+状态压缩 [B]计算几何(点的旋转) [C]DP+状态压缩 [D]离散数学+DP (感觉可出) [E]概率DP [F]LCT模板题(-_-///LCT是啥!!!!) ...
- The Willpower Instinct
https://book.douban.com/subject/7043452/ 1.冥想2.健康饮食(低GI.素食为主,未加工食物为主).低GI食物使血糖稳定(蛋白.麦片.粗纤谷类.豆类.水果蔬菜) ...
- openstack controller ha测试环境搭建记录(十一)——配置neutron(网络节点)
在网络节点配置内核参数:vi /etc/sysctl.confnet.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.conf.defau ...