cookieLibrary.js 写入cookie的JavaScript代码库
js code:
1
/* Cookie Library -- "Night of the Living Cookie" Version (25-Jul-96)
2
缔友计算机信息技术有限公司,涂聚文 geovindu@163.com 互相交流
3
Written by: Bill Dortch, hIdaho Design <geovindu@163.com>
4
The following functions are released to the public domain.
5
http://www.dusystem.com/
6
This version takes a more aggressive approach to deleting
7
cookies. Previous versions set the expiration date to one
8
millisecond prior to the current time; however, this method
9
did not work in Netscape 2.02 (though it does in earlier and
10
later versions), resulting in "zombie" cookies that would not
11
die. DeleteCookie now sets the expiration date to the earliest
12
usable date (one second into 1970), and sets the cookie's value
13
to null for good measure.
14
15
Also, this version adds optional path and domain parameters to
16
the DeleteCookie function. If you specify a path and/or domain
17
when creating (setting) a cookie**, you must specify the same
18
path/domain when deleting it, or deletion will not occur.
19
20
The FixCookieDate function must now be called explicitly to
21
correct for the 2.x Mac date bug. This function should be
22
called *once* after a Date object is created and before it
23
is passed (as an expiration date) to SetCookie. Because the
24
Mac date bug affects all dates, not just those passed to
25
SetCookie, you might want to make it a habit to call
26
FixCookieDate any time you create a new Date object:
27
28
var theDate = new Date();
29
FixCookieDate (theDate);
30
31
Calling FixCookieDate has no effect on platforms other than
32
the Mac, so there is no need to determine the user's platform
33
prior to calling it.
34
35
This version also incorporates several minor coding improvements.
36
37
**Note that it is possible to set multiple cookies with the same
38
name but different (nested) paths. For example:
39
40
SetCookie ("color","red",null,"/outer");
41
SetCookie ("color","blue",null,"/outer/inner");
42
43
However, GetCookie cannot distinguish between these and will return
44
the first cookie that matches a given name. It is therefore
45
recommended that you *not* use the same name for cookies with
46
different paths. (Bear in mind that there is *always* a path
47
associated with a cookie; if you don't explicitly specify one,
48
the path of the setting document is used.)
49
50
Revision History:
51
52
"Toss Your Cookies" Version (22-Mar-96)
53
- Added FixCookieDate() function to correct for Mac date bug
54
55
"Second Helping" Version (21-Jan-96)
56
- Added path, domain and secure parameters to SetCookie
57
- Replaced home-rolled encode/decode functions with Netscape's
58
new (then) escape and unescape functions
59
60
"Free Cookies" Version (December 95)
61
62
63
For information on the significance of cookie parameters, and
64
and on cookies in general, please refer to the official cookie
65
spec, at:
66
67
http:www.netscape.com/newsref/std/cookie_spec.html
68
69
****************************************************************** */
70
71
/* "Internal" function to return the decoded value of a cookie */
72
function getCookieVal (offset) {
73
var endstr = document.cookie.indexOf (";", offset);
74
if (endstr == -1) {
75
endstr = document.cookie.length;
76
}
77
return unescape(document.cookie.substring(offset, endstr));
78
}
79
80
/* Function to correct for 2.x Mac date bug. Call this function to
81
fix a date object prior to passing it to SetCookie.
82
IMPORTANT: This function should only be called *once* for
83
any given date object! See example at the end of this document. */
84
function FixCookieDate (date) {
85
var base = new Date(0);
86
var skew = base.getTime(); // dawn of (Unix) time - should be 0
87
if (skew > 0) { // except on the Mac - ahead of its time
88
date.setTime(date.getTime() - skew);
89
}
90
}
91
92
/* Function to return the value of the cookie specified by "name".
93
name - String object containing the cookie name.
94
returns - String object containing the cookie value, or null if
95
the cookie does not exist. */
96
function GetCookie (name) {
97
var temp = name + "=";
98
var tempLen = temp.length;
99
var cookieLen = document.cookie.length;
100
var i = 0;
101
while (i < cookieLen) {
102
var j = i + tempLen;
103
if (document.cookie.substring(i, j) == temp) {
104
return getCookieVal(j);
105
}
106
i = document.cookie.indexOf(" ", i) + 1;
107
if (i == 0) break;
108
}
109
return null;
110
}
111
112
/* Function to create or update a cookie.
113
name - String object containing the cookie name.
114
value - String object containing the cookie value. May contain
115
any valid string characters.
116
[expiresDate] - Date object containing the expiration data of the cookie. If
117
omitted or null, expires the cookie at the end of the current session.
118
[path] - String object indicating the path for which the cookie is valid.
119
If omitted or null, uses the path of the calling document.
120
[domain] - String object indicating the domain for which the cookie is
121
valid. If omitted or null, uses the domain of the calling document.
122
[secure] - Boolean (true/false) value indicating whether cookie transmission
123
requires a secure channel (HTTPS).
124
125
The first two parameters are required. The others, if supplied, must
126
be passed in the order listed above. To omit an unused optional field,
127
use null as a place holder. For example, to call SetCookie using name,
128
value and path, you would code:
129
130
SetCookie ("myCookieName", "myCookieValue", null, "/");
131
132
Note that trailing omitted parameters do not require a placeholder.
133
134
To set a secure cookie for path "/myPath", that expires after the
135
current session, you might code:
136
137
SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true); */
138
function SetCookie (name,value,expiresDate,path,domain,secure) {
139
document.cookie = name + "=" + escape (value) +
140
((expiresDate) ? "; expires=" + expiresDate.toGMTString() : "") +
141
((path) ? "; path=" + path : "") +
142
((domain) ? "; domain=" + domain : "") +
143
((secure) ? "; secure" : "");
144
}
145
146
/* Function to delete a cookie. (Sets expiration date to start of epoch)
147
name - String object containing the cookie name
148
path - String object containing the path of the cookie to delete. This MUST
149
be the same as the path used to create the cookie, or null/omitted if
150
no path was specified when creating the cookie.
151
domain - String object containing the domain of the cookie to delete. This MUST
152
be the same as the domain used to create the cookie, or null/omitted if
153
no domain was specified when creating the cookie. */
154
function DeleteCookie (name,path,domain) {
155
if (GetCookie(name)) {
156
document.cookie = name + "=" +
157
((path) ? "; path=" + path : "") +
158
((domain) ? "; domain=" + domain : "") +
159
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
160
}
161
}
162
163
164
// Calling examples:
165
// var expdate = new Date ();
166
// FixCookieDate (expdate); // Correct for Mac date bug - call only once for given Date object!
167
// expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs from now
168
// SetCookie ("ccpath", "http://www.dupcit.com/articles/", expdate);
169
// SetCookie ("ccname", "WebWoman", expdate);
170
// SetCookie ("tempvar", "This is a temporary cookie.");
171
// SetCookie ("ubiquitous", "This cookie will work anywhere in this domain",null,"/");
172
// SetCookie ("paranoid", "This cookie requires secure communications",expdate,"/",null,true);
173
// SetCookie ("goner", "This cookie must die!");
174
// document.write (document.cookie + "<br>");
175
// DeleteCookie ("goner");
176
// document.write (document.cookie + "<br>");
177
// document.write ("ccpath = " + GetCookie("ccpath") + "<br>");
178
// document.write ("ccname = " + GetCookie("ccname") + "<br>");
179
// document.write ("tempvar = " + GetCookie("tempvar") + "<br>");
180
181
/* Cookie Library -- "Night of the Living Cookie" Version (25-Jul-96)2
缔友计算机信息技术有限公司,涂聚文 geovindu@163.com 互相交流3
Written by: Bill Dortch, hIdaho Design <geovindu@163.com>4
The following functions are released to the public domain.5
http://www.dusystem.com/6
This version takes a more aggressive approach to deleting7
cookies. Previous versions set the expiration date to one8
millisecond prior to the current time; however, this method9
did not work in Netscape 2.02 (though it does in earlier and10
later versions), resulting in "zombie" cookies that would not11
die. DeleteCookie now sets the expiration date to the earliest12
usable date (one second into 1970), and sets the cookie's value13
to null for good measure.14

15
Also, this version adds optional path and domain parameters to16
the DeleteCookie function. If you specify a path and/or domain17
when creating (setting) a cookie**, you must specify the same18
path/domain when deleting it, or deletion will not occur.19

20
The FixCookieDate function must now be called explicitly to21
correct for the 2.x Mac date bug. This function should be22
called *once* after a Date object is created and before it23
is passed (as an expiration date) to SetCookie. Because the24
Mac date bug affects all dates, not just those passed to25
SetCookie, you might want to make it a habit to call26
FixCookieDate any time you create a new Date object:27

28
var theDate = new Date();29
FixCookieDate (theDate);30

31
Calling FixCookieDate has no effect on platforms other than32
the Mac, so there is no need to determine the user's platform33
prior to calling it.34

35
This version also incorporates several minor coding improvements.36

37
**Note that it is possible to set multiple cookies with the same38
name but different (nested) paths. For example:39

40
SetCookie ("color","red",null,"/outer");41
SetCookie ("color","blue",null,"/outer/inner");42

43
However, GetCookie cannot distinguish between these and will return44
the first cookie that matches a given name. It is therefore45
recommended that you *not* use the same name for cookies with46
different paths. (Bear in mind that there is *always* a path47
associated with a cookie; if you don't explicitly specify one,48
the path of the setting document is used.)49
50
Revision History:51

52
"Toss Your Cookies" Version (22-Mar-96)53
- Added FixCookieDate() function to correct for Mac date bug54

55
"Second Helping" Version (21-Jan-96)56
- Added path, domain and secure parameters to SetCookie57
- Replaced home-rolled encode/decode functions with Netscape's58
new (then) escape and unescape functions59

60
"Free Cookies" Version (December 95)61

62

63
For information on the significance of cookie parameters, and64
and on cookies in general, please refer to the official cookie65
spec, at:66

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

69
****************************************************************** */70

71
/* "Internal" function to return the decoded value of a cookie */72
function getCookieVal (offset) {73
var endstr = document.cookie.indexOf (";", offset);74
if (endstr == -1) {75
endstr = document.cookie.length;76
}77
return unescape(document.cookie.substring(offset, endstr));78
}79

80
/* Function to correct for 2.x Mac date bug. Call this function to81
fix a date object prior to passing it to SetCookie.82
IMPORTANT: This function should only be called *once* for83
any given date object! See example at the end of this document. */84
function FixCookieDate (date) {85
var base = new Date(0);86
var skew = base.getTime(); // dawn of (Unix) time - should be 087
if (skew > 0) { // except on the Mac - ahead of its time88
date.setTime(date.getTime() - skew);89
}90
}91

92
/* Function to return the value of the cookie specified by "name".93
name - String object containing the cookie name.94
returns - String object containing the cookie value, or null if95
the cookie does not exist. */96
function GetCookie (name) {97
var temp = name + "=";98
var tempLen = temp.length;99
var cookieLen = document.cookie.length;100
var i = 0;101
while (i < cookieLen) {102
var j = i + tempLen;103
if (document.cookie.substring(i, j) == temp) {104
return getCookieVal(j);105
}106
i = document.cookie.indexOf(" ", i) + 1;107
if (i == 0) break; 108
}109
return null;110
}111

112
/* Function to create or update a cookie.113
name - String object containing the cookie name.114
value - String object containing the cookie value. May contain115
any valid string characters.116
[expiresDate] - Date object containing the expiration data of the cookie. If117
omitted or null, expires the cookie at the end of the current session.118
[path] - String object indicating the path for which the cookie is valid.119
If omitted or null, uses the path of the calling document.120
[domain] - String object indicating the domain for which the cookie is121
valid. If omitted or null, uses the domain of the calling document.122
[secure] - Boolean (true/false) value indicating whether cookie transmission123
requires a secure channel (HTTPS). 124

125
The first two parameters are required. The others, if supplied, must126
be passed in the order listed above. To omit an unused optional field,127
use null as a place holder. For example, to call SetCookie using name,128
value and path, you would code:129
130
SetCookie ("myCookieName", "myCookieValue", null, "/");131
132
Note that trailing omitted parameters do not require a placeholder.133
134
To set a secure cookie for path "/myPath", that expires after the135
current session, you might code:136

137
SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true); */138
function SetCookie (name,value,expiresDate,path,domain,secure) {139
document.cookie = name + "=" + escape (value) +140
((expiresDate) ? "; expires=" + expiresDate.toGMTString() : "") +141
((path) ? "; path=" + path : "") +142
((domain) ? "; domain=" + domain : "") +143
((secure) ? "; secure" : "");144
}145

146
/* Function to delete a cookie. (Sets expiration date to start of epoch)147
name - String object containing the cookie name148
path - String object containing the path of the cookie to delete. This MUST149
be the same as the path used to create the cookie, or null/omitted if150
no path was specified when creating the cookie.151
domain - String object containing the domain of the cookie to delete. This MUST152
be the same as the domain used to create the cookie, or null/omitted if153
no domain was specified when creating the cookie. */154
function DeleteCookie (name,path,domain) {155
if (GetCookie(name)) {156
document.cookie = name + "=" +157
((path) ? "; path=" + path : "") +158
((domain) ? "; domain=" + domain : "") +159
"; expires=Thu, 01-Jan-70 00:00:01 GMT";160
}161
}162

163

164
// Calling examples:165
// var expdate = new Date ();166
// FixCookieDate (expdate); // Correct for Mac date bug - call only once for given Date object!167
// expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs from now 168
// SetCookie ("ccpath", "http://www.dupcit.com/articles/", expdate);169
// SetCookie ("ccname", "WebWoman", expdate);170
// SetCookie ("tempvar", "This is a temporary cookie.");171
// SetCookie ("ubiquitous", "This cookie will work anywhere in this domain",null,"/");172
// SetCookie ("paranoid", "This cookie requires secure communications",expdate,"/",null,true);173
// SetCookie ("goner", "This cookie must die!");174
// document.write (document.cookie + "<br>");175
// DeleteCookie ("goner");176
// document.write (document.cookie + "<br>");177
// document.write ("ccpath = " + GetCookie("ccpath") + "<br>");178
// document.write ("ccname = " + GetCookie("ccname") + "<br>");179
// document.write ("tempvar = " + GetCookie("tempvar") + "<br>");180

181

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)


浙公网安备 33010602011771号