- 浏览: 13730799 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
什么是Cookie?
谓Cookie,是网页 通过浏览器保 存在用户本地计算机 上的一小段数据 。用户再次访问该网页的时候,浏览器会将这一小段数据发送给该网页。Cookie是网景公司的前雇员Lou Montulli在1993年3月的发明。
Cookie 最典型的应用是判定注册用户是否已经登录网站。用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,也就是所谓“保存登录信息” 或“记住我”,这些所谓“记忆”都是用Cookie保存的。另一个重要应用场合是“购物车” 之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,网页把这些信息会写入Cookie,以便在最后付款时提取信息。
Cookie里面都有些什么?
Cookie一般包含至少下面3项内容。
- 具体数据的名称和值
- 过期日
- 针对网页的域名和路径
如果没有指定过期日,Cookie在浏览器关闭时过期;如果想Cookie永不过期,就把过期日指定为当前日期加上一万年好了(^_*)。
Cookie究竟有多大?
根据Internet标准RFC 2109, HTTP State Management Mechanism ,
- 每个Cookie可以有4096字节(4KB)
- 一个浏览器至少保存300个Cookie
- 一个站点的Cookie数量不超过20个
当然,不同浏览器可以有自己的设置,可以放宽上面的这些限制。上面的只是最小限制。
我们先要学一学
Cookie
的基本知识。
每个
Cookie
都是这样的:
<cookie
名
>=<
值
>
<cookie
名
>
的限制与
javascript
的命名限制大同小异,少了
“
不能用
javascript
关键字
”
,多了
“
只能用可以用在
URL
编码中的字符
”
。后者比较难懂,但是只要你只用字母和数字命名,就完全没有问题了。
<
值
>
的要求也是
“
只能用可以用在
URL
编码中的字符
”
。
每个
Cookie
都有失效日期,一旦电脑的时钟过了失效日期,这个
Cookie
就会被删掉。我们不能直接删掉一个
Cookie
,但是可以用设定失效日期早于现在时刻的方法来间接删掉它。
每个网页,或者说每个站点,都有它自己的
Cookies
,这些
Cookies
只能由这个站点下的网页来访问,来自其他站点或同一站点下未经授权的区域的网页,是不能访问的。每一
“
组
”Cookies
有规定的总大小(大约
2KB
每
“
组
”
),一超过最大总大小,则最早失效的
Cookie
先被删除,来让新的
Cookie“
安家
”
。
现在我们来学习使用
documents.cookie
属性。
如果直接使用
documents.cookie
属性,或者说,用某种方法,例如给变量赋值,来获得
documents.cookie
的值,我们就可以知道在现在的文档中有多少个
Cookies
,每个
Cookies
的名字,和它的值。例如,在某文档中添加
“document.write(documents.cookie)”
,结果显示:
name=kevin; email=kevin@kevin.com; lastvisited=index.html
这意味着,文档包含
3
个
Cookies
:
name, email
和
lastvisited
,它们的值分别是
kevin, kevin@kevin.com
和
index.html
。可以看到,两个
Cookies
之间是用分号和空格隔开的,于是我们可以用
cookieString.split('; ')
方法得到每个
Cookie
分开的一个数组(先用
var cookieString = documents.cookie
)。
设定一个
Cookie
的方法是对
documents.cookie
赋值。与其它情况下的赋值不同,向
documents.cookie
赋值不会删除掉原有的
Cookies
,而只会增添
Cookies
或更改原有
Cookie
。赋值的格式:
documents.cookie = 'cookieName=' + escape('cookievalue') + ';expires=' + expirationDateObj.toGMTString();
是不是看到头晕了呢?
cookieName
表示
Cookie
的名称,
cookievalue
表示
Cookie
的值,
expirationDateObj
表示储存着失效日期的日期对象名,如果不需要指定失效日期,则不需要第二行。不指定失效日期,则浏览器默认是在关闭浏览器(也就是关闭所有窗口)之后过期。
首先
escape()
方法:为什么一定要用?因为
Cookie
的值的要求是
“
只能用可以用在
URL
编码中的字符
”
。我们知道
“escape()”
方法是把字符串按
URL
编码方法来编码的,那我们只需要用一个
“escape()”
方法来处理输出到
Cookie
的值,用
“unescape()”
来处理从
Cookie
接收过来的值就万无一失了。而且这两个方法的最常用途就是处理
Cookies
。其实设定一个
Cookie
只是
“documents.cookie = 'cookieName=cookievalue'”
这么简单,但是为了避免在
cookievalue
中出现
URL
里不准出现的字符,还是用一个
escape()
好。
然后
“expires”
前面的分号:注意到就行了。是分号而不是其他。
最后
toGMTString()
方法:设定
Cookie
的时效日期都是用
GMT
格式的时间的,其它格式的时间是没有作用的。
现在我们来实战一下。设定一个
“name=rose”
的
Cookie
,在
3
个月后过期。
var expires = new Date(); expires.setTime(expires.getTime() + 3 * 30 * 24 * 60 * 60 * 1000); /* 三个月 x 一个月当作 30 天 x 一天 24 小时 x 一小时 60 分 x 一分 60 秒 x 一秒 1000 毫秒 */ documents.cookie = 'name=rose;expires=' + expires.toGMTString();
为什么没有用
escape()
方法?这是因为我们知道
rose
是一个合法的
URL
编码字符串,也就是说,
'rose' == escape('rose')
。一般来说,如果设定
Cookie
时不用
escape()
,那获取
Cookie
时也不用
unescape()
。
再来一次:编写一个函数,作用是查找指定
Cookie
的值。
function getCookie(cookieName) { var cookieString = documents.cookie; var start = cookieString.indexOf(cookieName + '='); // 加上等号的原因是避免在某些 Cookie 的值里有 // 与 cookieName 一样的字符串。 if (start == -1) // 找不到 return null; start += cookieName.length + 1; var end = cookieString.indexOf(';', start); if (end == -1) return unescape(cookieString.substring(start)); return unescape(cookieString.substring(start, end)); }
这个函数用到了字符串对象的一些方法,如果你不记得了(你是不是这般没记性啊),请快去查查。这个函数所有的
if
语句都没有带上
else
,这是因为如果条件成立,程序运行的都是
return
语句,在函数里碰上
return
,就会终止运行,所以不加
else
也没问题。该函数在找到
Cookie
时,就会返回
Cookie
的值,否则返回
“null”
。
现在我们要删除刚才设定的
name=rose Cookie
。
var expires = new Date(); expires.setTime(expires.getTime() - 1); documents.cookie = 'name=rose;expires=' + expires.toGMTString();
可以看到,只需要把失效日期改成比现在日期早一点(这里是早 1 毫秒),再用同样的方法设定 Cookie ,就可以删掉 Cookie 了。
实例:
<html> <head> <script type="text/javascript"> function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } function checkCookie() { username=getCookie('username') if (username!=null && username!="") {alert('Welcome again '+username+'!')} else { username=prompt('Please enter your name:',"") if (username!=null && username!="") { setCookie('username',username,365) } } } </script> </head> <body onLoad="checkCookie()"> </body> </html>
通过JQuery插件实 现cookie操作
你可以在这款插件的主页下载到它:http://plugins.jquery.com/project/Cookie
这里是一个示例页面:在 线示例
当在页面中引用了jquery文件及该插件文件后,可进行如下操作:
设置cookie
设置一个名称为blog,值为css9.net的cookie:
$.cookie("blog", "css9.net");
设置一个名称为blog,值为css9.net的cookie,同时设置过期时间(expires属性)为7天:
$.cookie("blog", "css9.net", { expires: 7 });
设置一个名称为blog,值为css9.net的cookie,设置过期时间(expires属性)为7天,同时设置cookie 的path属性 为”/admin”
$.cookie("blog", "css9.net", { path: '/admin', expires: 7 });
读取Cookie:
读取名称为blog的cookie值:
alert( $.cookie("blog") );
删除cookie:
$.cookie("example", null);
我简单看了下插件脚本的内容,实现是非常简单的。为了这样一个功能,要多引用一个文件,增加一个http连接数,感觉有些不值。其实可以把这个插件 里面的功能方法提出来,合并到网站的js文件中,使用时方法是一样的。
代码:
/** * Cookie plugin * * Copyright (c) 2006 Klaus Hartl (stilbuero.de) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * */ /** * Create a cookie with the given name and value and other optional parameters. * * @example $.cookie('the_cookie', 'the_value'); * @desc Set the value of a cookie. * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); * @desc Create a cookie with all available options. * @example $.cookie('the_cookie', 'the_value'); * @desc Create a session cookie. * @example $.cookie('the_cookie', null); * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain * used when the cookie was set. * * @param String name The name of the cookie. * @param String value The value of the cookie. * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. * If set to null or omitted, the cookie will be a session cookie and will not be retained * when the the browser exits. * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will * require a secure protocol (like HTTPS). * @type undefined * * @name $.cookie * @cat Plugins/Cookie * @author Klaus Hartl/klaus.hartl@stilbuero.de */ /** * Get the value of a cookie with the given name. * * @example $.cookie('the_cookie'); * @desc Get the value of a cookie. * * @param String name The name of the cookie. * @return The value of the cookie. * @type String * * @name $.cookie * @cat Plugins/Cookie * @author Klaus Hartl/klaus.hartl@stilbuero.de */ 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和Pure.CSS创建一个可编辑的表格
2016-08-26 02:24 1236使用开源组件真的可以 ... -
2016十大优秀jQuery插件推荐
2016-08-26 02:24 2339当有限的开发知识限制了设计进展,你无法为自己插上创新的翅膀时 ... -
jQuery .tmpl() 用法
2016-08-26 02:22 1221参考效果: DEMO 下载: jquery-tmpl-ma ... -
jQuery:从零开始,DIY一个jQuery(2)
2016-08-19 03:06 1062在上篇文章我们简单实 ... -
jQuery:从零开始,DIY一个jQuery(1)
2016-08-19 03:00 995从本篇开始会陪大家一起从零开始走一遍 jQuery 的奇妙旅 ... -
Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar
2016-08-18 06:15 1597先看上面图片的效果,下面是代码: .navbar .nav ... -
jQuery: 操作select option方法集合
2016-08-18 06:06 3351每一次操作select的时候,总是要谷歌一下资料,真是太不爽 ... -
jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
2016-08-16 05:31 1252原文:http://www.codeceo.com/arti ... -
jQuery: 选择器(DOM,name,属性,元素)
2016-08-11 01:17 4515出处:http://www.cnblogs.com/star ... -
jQuery: 合并表格中相同文本的相邻单元格
2016-08-01 08:02 1387一、效果 二、代码 <!DOCTYPE ... -
Bootstrap 3: 使用注意box-sizing细节及解决方法
2016-08-01 07:58 1603一、bootstrap样式 在Bootstrap v3.3 ... -
域名详解
2016-07-29 12:51 863域名 域名就是用来唯 ... -
Bootstrap 3: 图标转换事件 Change icons when toggle
2016-07-20 13:39 2323代码: <link href="http: ... -
Bootstrap 3: 图标转换事件 Change icons when toggle
2016-07-19 07:12 765代码: <link href=" ... -
jQuery:无限循环两个或者多个事件 click / toggle between two functions
2016-07-19 07:12 1646插件: (function($) { $.fn. ... -
javascript 中面向对象实现 如何继承
2016-07-14 01:01 548上一篇博客已经说了关于javascript中的封装, 其中也 ... -
javascript 中的面向对象实现 如何封装
2016-07-12 12:27 1229javascript 是一门很灵活的语言,也是一门有缺陷的语 ... -
AngularJS jQuery 共存法则
2016-06-14 05:26 3628寻找正确的方法,如何在AngularJS里使用jQuery ... -
七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX
2016-06-04 05:28 1165AngularJS学习列表:七步 ... -
七步从Angular.JS菜鸟到专家(2):Scopes
2016-06-04 05:27 736AngularJS学习列表:七步走 Angular.js 从 ...
相关推荐
<script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> ``` #### 三、基本用法 1. **创建Cookie** ```javascript // 创建名为'name'的Cookie,值为'value' $.cookie...
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> ``` ### 2. 新建Cookie 新建Cookie使用`jQuery.cookie`方法,接受两个参数:cookie的名称和值。例如...
<script src="//cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> // 在这里编写您的代码 </script> </body> </html> ``` #### 三、设置 Cookie 使用 `$.cookie()` 方法可以轻松地设置 ...
《jQuery Cookie:轻松实现JavaScript中的Cookie操作》 在Web开发中,Cookie是一种常见的数据存储机制,用于在客户端保存用户信息、设置或跟踪用户行为。jQuery库的扩展插件jQuery Cookie则为开发者提供了一种简单...
jQuery Cookie是jQuery的一个扩展插件,它提供了一种简单易用的方式来操作Cookie,使得开发者无需深入了解Cookie的工作原理,就能方便地读写Cookie。 **一、jQuery Cookie插件的安装与引入** 要使用jQuery Cookie...
Jquery全屏遮掩及加载条插件,使用: <script type="text/javascript" ...<script type="text/javascript" src="js/jquery.cookie.js"></script> <script type="text/javascript" src="js/jquery.blockUI.js"></script>
总结,jQuery 1.4.2作为一款经典版本,提供了丰富的DOM操作和事件处理能力,而jQuery Cookie插件则弥补了JavaScript原生对Cookie操作的不足,两者结合,为开发者构建交互性强、用户体验优良的Web应用提供了便利。...
在前端开发中,`jQuery.cookie` 是一个非常实用的插件,它使得在JavaScript中操作浏览器Cookie变得简单易行。Cookie是Web应用中用于存储小型数据的一种机制,常用于用户会话管理、个性化设置或者临时记录用户信息。`...
总结,`jquery.cookie.js`简化了JavaScript对Cookie的操作,使得在Web应用中管理用户数据变得更加便捷。然而,随着Web Storage(localStorage和sessionStorage)以及IndexedDB等现代存储技术的出现,对于大量数据或...
总结来说,使用jQuery和`jquery.cookie`插件创建的倒计时功能是Web开发中的一种实用技巧,它结合了JavaScript的动态特性与cookie的持久化存储,实现了跨页面刷新的计时器。这种方法对于需要跟踪时间的场景,如在线...
`jQuery.cookie.js` 是一个轻量级的JavaScript库,用于在浏览器端管理和操作Cookie。这个插件使得与Cookie交互变得简单,尤其在处理用户偏好设置、临时存储数据或者实现基本的会话管理时非常实用。在标题提到的...
jQuery是一款广泛使用的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互等任务。而jquery.cookie插件则是jQuery的一个扩展,用于在浏览器中管理cookies,这是一种在客户端存储小量数据的技术。 首先,要使用...
本文将深入探讨如何使用JS操作Cookie的子键,以及如何利用jQuery的Ajax方法进行无刷新的数据提交,并接收后台返回的值。 首先,让我们了解什么是Cookie和它的子键。Cookie是一种在客户端存储小量信息的方法,它由...
jQuery Cookie是一个非常实用的JavaScript库,它为jQuery提供了一种简单的方式来操作浏览器的Cookie。在Web开发中,Cookie是用于存储客户端数据的一种机制,它可以跟踪用户的浏览行为、保存用户设置或者在用户访问...
`jquery.cookie.js`是jQuery的一个扩展插件,它使得在Web应用中管理和操作Cookie变得更加简单。本篇文章将深入探讨`jquery.cookie.js`包及其在实现“记住密码”功能中的应用。 首先,我们来了解什么是Cookie。...
在网页开发中,jQuery 是一个广泛使用的 JavaScript 库,它简化了 DOM 操作、事件处理以及Ajax交互等任务。在本篇文章中,我们将探讨如何使用 jQuery 操作客户端的 Cookie,这是在网页应用中存储和检索用户数据的一...
在Web开发领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互等任务。而"最新jquery操作cookie插件"正是针对Cookie管理提供的一种便捷解决方案。Cookie是服务器在用户浏览器上...
`jQuery Cookies`提供了以下核心函数来操作cookies: - `$.cookie(name, value, options)`: 创建或更新一个cookie。 - `$.removeCookie(name, options)`: 删除一个已存在的cookie。 - `$.cookie(name)`: 读取一个...
1. **jQuery**: jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互。在压缩包中,我们有两个jQuery相关的文件——`jquery.min.js`和`jquery-1.11.0.min.js`。`jquery.min.js`可能...
cookie设置插件jquery.cookie.min.js 文章《javascript设置cookie高级篇可跨域访问》https://blog.csdn.net/cplvfx/article/details/117822956