如何用javascript读取cookie干掉这个cookie

encodeURIComponent();
document.cookie = encodeURIComponent(&name&) + &=& + encodeURIComponent(&Nicholas&);
要给被创建的cookie指定额外的信息,只要将参数追加到该字符串,和Set-Cookie头中的格式一样,如下:
document.cookie = encodeURIComponent(&name&) + &=& + encodeURIComponent(&Nicholas&) + &; domain=.; path=/&;
由于JavaScript中读写cookie不是非常直观,我们常写一些函数来简化cookie的功能。基本的cookie操作有三种:读取、写入和删除。它们在CookieUtil对象中如下表示:
复制代码 代码示例:
var CookieUtil = {
&&& get: function (name) {
&&&&&&& var cookieName = encodeURIComponent(name) + &=&,
&&&&&&&&&&& cookieStart = document.cookie.indexOf(cookieName),
&&&&&&&&&&& cookieValue =
&&&&&&& if (cookieStart & -1) {
&&&&&&&&&&& var cookieEnd = document.cookie.indexOf(&;&, cookieStart)
&&&&&&&&&&& if (cookieEnd == -1) {
&&&&&&&&&&&&&&& cookieEnd = document.cookie.
&&&&&&&&&&& }
&&&&&&&&&&& cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
&&&&&&& return cookieV
&&& set: function (name, value, expires, path, domain, secure) {
&&&&&&& var cookieText = encodeURIComponent(name) + &=& + encodeURIComponent(value);
&&&&&&& if (expires instanceof Date) {
&&&&&&&&&&& cookieText += &; expires=& + expires.toGMTString();
&&&&&&& if (path) {
&&&&&&&&&&& cookieText += &; path=& +
&&&&&&& if (domain) {
&&&&&&&&&&& cookieText += &; domain=& +
&&&&&&& if (secure) {
&&&&&&&&&&& cookieText == &; secure&;
&&&&&&& document.cookie = cookieT
&&& unset: function (name, path, domain, secure) {
&&&&&&& this.set(name, &&, new Date(0), path, domain, secure);
CookieUtil.get()方法根据cookie的名字获取相应的值。他是通过在document.cookie字符串中查找cookie名加上等于号的位置。如果找到了,那么使用indexOf()查找该位置之后的第一个分号(表示了该cookie的结束位置)。如果没有找到分号,则表示该cookie是字符串中的最后一个,则域下的字符串都是cookie的值。该值使用decodeURIComponent()进行解码并最后返回。如果没有发现Cookie,则返回null。
CookieUtil.set()方法在页面上设置了一个cookie,接受几个参数:cookie的名称,cookie的值,可选的用于指定cookie何时应该被删除的Date对象,cookie的可选的URL路径,可选的域,以及可选的表示是否要添加secure标志的Boolean值。参数是按照它们使用频率的多少来排列的,只有头两个是必须的。在这个方法中,名称和值都使用encodeURIComponent()进行了URL编码,并检查其它选项。如果expires参数是Date对象,那么会使用Date对象的toGMTString()方法正确格式化Date对象,并添加到expires选项上。方法的其它部分就是构造cookie字符串并将其设置到document.cookie中。
没有删除现存cookie的直接方法。所以,需要使用相同的路径、域和安全选项再次设置cookie,并将失效时间设置为过去的时间。CookieUtil.unset()方法可以处理这种事情。它接受4个参数:要删除的cookie的名称,可选的路径参数,可选的域参数以及可选的安全参数。这些参数加上空字符串并设置失效时间为日(初始化为0ms的Date对象的值),传给CookieUtil.set()。这样就能确保cookie被删除。
复制代码 代码示例:
//设置cookie
CookieUtil.set(&name&, &Nicholas&);
CookieUtil.set(&book&, &Professional JavaScript&);
alert(CookieUtil.get(&name&));
alert(CookieUtil.get(&book&));
//删除cookie
CookieUtil.unset(&name&);
CookieUtil.unset(&book&)
//设置1个cookie,包括它的路径、域、截止日期
CookieUtil.set(&name&, &Nicholas&, &/books/projs/&, &.cn&, new Date(&January 1, 2010&));
//删除同一cookie
CookieUtil.unset(&name&, &/books/projs/&, &&);
//设置1个安全cookie
CookieUtil.set(&name&, &Nicholas&, null, null, null, true);
这些方法通过处理解析、构造cookie字符串的任务令在客户端利用cookie存储数据更加简单。
Related posts:
您可能感兴趣的文章:cookie是 存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的 多个网页,但不能跨越多个域名使用。 不同的浏览器对cookie的实现也不一样,但其性质是相同的。例如在Windows 2000以及Windows xp中,cookie文件存储于documents and settings/userName/cookie/文件夹下。通常的命名格式为: 。
cookie是用来识别用户,每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。
cookie机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点。同时加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,每个域的cookie总数是有限制的。 IE6 每个域名最多20个 IE7以及 以上的版本 和 Firefox 浏览器 限制每个域最多50个,Oprea限制每个域最多30多个,Safari 和 Chrome没有硬件规定。
cookie的成分: 名称,值,域,路径,失效时间,安全标志。
它可以用于以下几种场合。&
1、 保存用户登录状态。例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。 cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个 月、一年等。&
2、 跟踪用户行为。例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了 cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后 台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便。
3、定制页面。如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问的界面风格。
4、创建购物车。正如在前面的例子中使用cookie来记录用户需要购买的商品一样,在结账的时候可以统一提交。例如淘宝网就使用cookie记录了用户曾经浏览过的商品,方便随时进行比较。
当然,上述应用仅仅是cookie能完成的部分应用,还有更多的功能需要全局变量。cookie的缺点主要集中于安全性和隐私保护。
下面一段代码是对cookie的设置,获取以及删除操作。
//新建cookie
//hours为空字符串时,cookie的生存期至浏览器会话结束。hours为数字0时,建立的是一个失效的cookie,这个cookie会覆盖已经建立过的同名、同path的cookie(如果这个cookie存在)。
function setCookie(name,value,hours) {
var name = escape(name);
var value = escape(value);
var expires = new Date();
expires.setTime(expires.getTime() + hours*3600000);
_expires = (typeof hours) == "string" ? "" : ";expires=" + expires.toUTCString();
document.cookie = name + "=" +value + _
//获取cookie
function getCookieValue(name) {
var name = escape(name);
//读cookie属性,这将返回文档的所有cookie
var allcookies = document.
//查找名为name的cookie的开始位置
name += "=";
var pos = allcookies.indexOf(name);
//如果找到了具有该名字的cookie,那么提取并使用它的值
if(pos != -1 ) {
var start = pos + name.
var end = allcookies.indexOf(";", start);
if (end == -1) end = allcookies.
var value = allcookies.substring(start,end);
return unescape(value);
} else return "";
//删除cookie
function deleteCookie(name){
var name = escape(name);
var expires = new Date(0);
document.cookie = name + "="+ ";expires=" + expires.toUTCString() ;
&具体实例:用户登录勾选记住密码的一个效果
1 &!DOCTYPE HTML&
4 &title&login&/title&
9 用户名:&input type="text" id="username"/&&br/& 10 密码:&input type="passwd" id="pwd"/&&br/& 11 &input type="checkbox" id = "rempwd" checked=""/&记住密码 12 &input type="button" value="登录" id="btn"/& 13 &/form& 14 &script type="text/javascript"& 15
window.onload =function() { 16
17 var btn = DocGetId("btn"); 18
btn.onclick =function() { 20 var rempwd = DocGetId("rempwd"); 21 var userName = DocGetId("username").value, pwd = DocGetId("pwd"). 22 if(rempwd.checked){ 23
setCookie(userName,userName,2); 24
setCookie(userName+"_pwd",pwd,2); 25 //alert(userNameValue +"|"+passwordValue) 26
} 27 else{ 28
deleteCookie(userName); 29
deleteCookie(pwd); 30
checkLogin(userName, pwd); 32
DocGetId("username").onblur =function() { 35 var user = DocGetId("username"). 36 var userNameValue = getCookieValue(user); 37 var passwordValue = getCookieValue(user+"_pwd");
38 if( userNameValue == user) { 39
DocGetId("pwd").value = passwordV 40
} 44 function DocGetId(id) { 45 return document.getElementById(id); 46
} 47 function checkLogin(str1,str2) { 48 //var reg = /^[A-Za-z0-9]+{3,21}$/; 49 var reg=/[(\¥)(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\&)(\&)(\?)(\)]+/ ; 50
51 if(str1 ==""|| str1 ==null) { 52
alert("请您先填写用户名"); 53 returnfalse; 54
}elseif(reg.test(str1)){ 55
alert("用户名不能为非法字符"); 56 returnfalse; 57
} elseif(str2 ==""|| str2 ==null) { 58
alert("密码不能为空"); 59 returnfalse; 60
61 else { 62
alert("弄对了"); 63 returntrue; 64
67 //新建cookie 68 //hours为空字符串时,cookie的生存期至浏览器会话结束。hours为数字0时,建立的是一个失效的cookie,这个cookie会覆盖已经建立过的同名、同path的cookie(如果这个cookie存在)。 69 function setCookie(name,value,hours) { 70 var name = escape(name); 71 var value = escape(value); 72 var expires =new Date(); 73
expires.setTime(expires.getTime() + hours*3600000); 74
_expires = (typeof hours) =="string"?"" : ";expires="+ expires.toUTCString();
document.cookie = name +"="+value + _
} 77 //获取cookie 78 function getCookieValue(name) { 79 var name = escape(name); 80 //读cookie属性,这将返回文档的所有cookie
81 var allcookies = document. 82 //查找名为name的cookie的开始位置
name +="="; 84 var pos = allcookies.indexOf(name); 85 //如果找到了具有该名字的cookie,那么提取并使用它的值
86 if(pos !=-1 ) {
87 var start = pos + name.
88 var end = allcookies.indexOf(";", start); 89 if (end ==-1) end = allcookies.
90 var value = allcookies.substring(start,end); 91 return unescape(value); 92
} elsereturn"";
} 95 //删除cookie 96 function deleteCookie(name){
97 var name = escape(name); 98 var expires =new Date(0); 99 100
document.cookie = name +"="+";expires="+ expires.toUTCString() ;
103 &/script&104 &/body&105 &/html&
Views(...) Comments()

我要回帖

更多关于 javascript cookie 的文章

 

随机推荐