首页 > web前端 > js教程 > 正文

写入cookie的JavaScript代码库 cookieLibrary.js_javascript技巧

WBOY
发布: 2016-05-16 18:43:43
原创
1393 人浏览过

/* Cookie Library -- "Night of the Living Cookie" Version (25-Jul-96)
2缔友计算机信息技术有限公司,涂聚文 geovindu@163.com 互相交流
3 Written by: Bill Dortch ,爱达荷州设计
4 以下功能已发布到公共领域。
5http://www.dusystem.com/
6 此版本采用更积极的方法来删除
7 cookie。以前的版本将到期日期设置为当前时间之前
8 毫秒;然而,这个方法
9在Netscape 2.02中不起作用(尽管它在早期和
更高版本中有效),导致“僵尸”cookie不会
消亡。现在,DeleteCookie 将过期日期设置为最早的
可用日期(1970 年的一秒),并将 cookie 的值
设置为 null 以进行良好的测量。

此外,此版本还在
DeleteCookie 函数中添加了可选的路径和域参数。如果您在创建(设置)cookie**时指定了路径和/或域
,则在删除它时必须指定相同的
路径/域,否则将不会发生删除。

现在必须显式调用 FixCookieDate 函数来
纠正 2.x Mac 日期错误。在创建 Date 对象之后、
将其(作为到期日期)传递给 SetCookie 之前,应
调用此函数
*一次*。由于
Mac 日期错误影响所有日期,而不仅仅是那些传递给
SetCookie 的日期,因此您可能希望养成在创建新 Date 对象时调用
FixCookieDate 的习惯:

var theDate = new Date();
FixCookieDate (theDate);

调用 FixCookieDate 对
Mac 以外的平台没有影响,因此在调用之前无需确定用户的平台


此版本还包含一些小的编码改进。

**请注意,可以设置多个具有相同
名称但不同(嵌套)路径的cookie。例如:

SetCookie("颜色","红色",null,"/outer");
SetCookie("颜色","蓝色",null,"/外层/内层");

但是,GetCookie 无法区分这些,并且将返回
第一个与给定名称匹配的 cookie。因此,
建议您*不要*对具有
不同路径的 cookie 使用相同的名称。 (请记住,*总是*有一个路径
与 cookie 关联;如果您没有明确指定路径,
将使用设置文档的路径。)

修订历史:

“扔掉你的饼干”版本(96 年 3 月 22 日)
- 添加了 FixCookieDate() 函数以纠正 Mac 日期错误

“第二个帮助”版本(1 月 21 日) -96)
- 向 SetCookie 添加了路径、域和安全参数
- 用 Netscape 的
新的(当时)转义和 unescape 函数替换了本地滚动的编码/解码函数

“免费 Cookie”版本(95 年 12 月)


有关 cookie 参数的重要性以及
和一般 cookie 的信息,请参阅官方 cookie
规范,网址为:

http:www.netscape.com/newsref/std/cookie_spec.html

**************************** ************************************** */

/* *//* “内部”函数返回 cookie 的解码值*/

代码如下:


function getCookieVal (offset) {
var endstr = document.cookie.indexOf(";", offset);
if (endstr == -1) {
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
}



/**//* 修正 2.x Mac 日期错误的函数。调用此函数
在将日期对象传递给 SetCookie 之前修复它。
重要提示:对于
任何给定的日期对象,只能调用此函数*一次*!请参阅本文档末尾的示例。*/ 代码如下:


function FixCookieDate (date) {
var base = new Date(0);
var skew = base.getTime(); // (Unix) 时间的黎明 - 应该为 0
if (skew > 0) { // Mac 上除外 - 提前
date.setTime(date.getTime() - skew);
}
}



/**//* 返回“name”指定的 cookie 值的函数。
name - 包含 cookie 名称的字符串对象。
返回 - 包含 cookie 值的字符串对象,如果
cookie 不存在则返回 null。*/ 代码如下:

function GetCookie (name) {
var temp = name "=";
var tempLen = temp.length;
var cookieLen = document.cookie.length;
var i = 0;
while (i var j = i tempLen;
if (document.cookie.substring(i, j) == temp) {
return getCookieVal(j);
}
i = document.cookie.indexOf(" ", i) 1;
if (i == 0) 中断;
}
返回空;
}

/**//* 创建或更新 cookie 的函数。
name - 包含 cookie 名称的字符串对象。
value - 包含 cookie 值的字符串对象。可能包含
任何有效的字符串字符。
[expiresDate] - 包含 cookie 过期数据的日期对象。如果
省略或为空,则在当前会话结束时使 cookie 过期。
[path] - 字符串对象,指示 cookie 有效的路径。
如果省略或为空,则使用调用文档的路径。
[domain] - 字符串对象,指示 cookie
有效的域。如果省略或为空,则使用调用文档的域。
[secure] - 布尔值 (true/false),指示 cookie 传输
是否需要安全通道 (HTTPS)。

前两个参数是必需的。其他的,如果提供的话,必须
按照上面列出的顺序传递。要省略未使用的可选字段,
使用 null 作为占位符。例如,要使用名称、
值和路径调用 SetCookie,您可以编写以下代码:

SetCookie ("myCookieName", "myCookieValue", null, "/");

请注意,尾随省略的参数不需要占位符。

要为路径“/myPath”设置一个在
当前会话后过期的安全 cookie,您可以编写以下代码:

SetCookie (myCookieVar, cookieValueVar, null, "/myPath" ,空,真);*/
复制代码代码如下:

function SetCookie (name,value,expiresDate,path,domain,secure) {
document.cookie = name "= escape (value)
((expiresDate) ? "; expires="expiresDate.toGMTString() : "")
((path) ? "; path=" 路径 : "")
((domain) ? "; domain=" 域 : "")
((安全) ? "; 安全" : "");
}


/**//* 删除 cookie 的函数。 (将到期日期设置为纪元的开始)
name - 包含 cookie 名称的字符串对象
path - 包含要删除的 cookie 路径的字符串对象。这必须
与用于创建 cookie 的路径相同,如果
创建 cookie 时未指定路径,则为 null/省略。
domain - 包含要删除的 cookie 域的字符串对象。这必须
与用于创建cookie的域相同,或者如果
在创建cookie时未指定域,则为空/省略。*/
复制代码代码如下:

function DeleteCookie (name,path,domain) {
if (GetCookie(name)) {
document.cookie = name "="
((path ) ? "; 路径 = " 路径 : "")
((域) ? "; 域 = " 域 : "")
"; 过期=70 年 1 月 1 日星期四 00:00:01 GMT ”;
}
}



//调用示例:
// var expdate = new Date ();
// FixCookieDate (expdate); // 纠正 Mac 日期错误 - 对于给定的 Date 对象仅调用一次!
// expdate.setTime (expdate.getTime() (24 * 60 * 60 * 1000)); // 从现在起 24 小时
// SetCookie ("ccpath", "http://www.dupcit.com/articles/", expdate);
//SetCookie("ccname","WebWoman",expdate);
//SetCookie("tempvar","这是一个临时cookie。");
// SetCookie("无处不在","这个cookie将在这个域的任何地方工作",null,"/");
// SetCookie("paranoid", "此cookie需要安全通信",expdate,"/",null,true);
// SetCookie("goner", "这个cookie必须死掉!");
// document.write(document.cookie "
");
//DeleteCookie("goner");
// document.write(document.cookie "
");
// document.write ("ccpath = " GetCookie("ccpath") "
");
// document.write ("ccname = " GetCookie("ccname") "
");
// document.write ("tempvar = " GetCookie("tempvar") "
");

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!