javascript 操做cookies详解javascript
这段操做cookies的方法我使用好久了,可是一直一来没遇到什么问题,今天在作一个在第一个页面保存了cookies,第二个页面获取或者第三个页面获取的功能中,发现了方法的局限性,好比,第一个页面路径为 http://xxxxx/cyb-car2016/h5OfficeWorker/index,第二个页面路径为 http://xxxxx/cyb-car2016/h5AlertController/index,其中除了域名是同样以外,还有一个命名空间不同,而cookies是默认保存在当前页面下,因此在第一个页面中保存了cookies,由于保存的路径不一样,第二个页面会获取不到cookies。 解决方法是,在保存cookies的时候,设置一下path,document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/"; ,其中path=/表示保存在域名路径下,全局可用java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/***********************操做cookies的方法***************************/
//写cookies
//这是有设定过时时间的使用示例:
//s20是表明20秒
//h是指小时,如12小时则是:h12
//d是天数,30天则:d30
function
setCookie(name,value,time){
var
strsec = getsec(time);
var
exp =
new
Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name +
"="
+ escape (value) +
";expires="
+ exp.toGMTString()+
";path=/"
;
}
//读取cookies
function
getCookie(name){
var
arr,reg=
new
RegExp(
"(^| )"
+name+
"=([^;]*)(;|$)"
);
if
(arr=document.cookie.match(reg))
return
unescape(arr[2]);
else
return
false
;
}
// 删除cookies
function
delCookie(name){
var
exp =
new
Date();
exp.setTime(exp.getTime() - 1);
var
cval=getCookie(name);
if
(cval!=
null
)
document.cookie= name +
"="
+cval+
";expires="
+exp.toGMTString()+
";path=/"
;
}
function
getsec(str){
//alert(str);
var
str1=str.substring(1,str.length)*1;
var
str2=str.substring(0,1);
if
(str2==
"s"
)
{
return
str1*1000;
}
else
if
(str2==
"h"
)
{
return
str1*60*60*1000;
}
else
if
(str2==
"d"
)
{
return
str1*24*60*60*1000;
}
}
//获取Cookie
//var name = getCookie("name");
//var phone = getCookie("phone");
//
//if(phone != ""){
// $("input[name=phone]").val(phone);
//}
//if(name!="false"){
// $("input[name=name]").val(name);
//}
/***********************操做cookies的方法***************************/
|
感谢阅读,但愿能帮助到你们,谢谢你们对本站的支持!cookie