js操作cookie
现在许多网站都会选择生成静态页面,提高网站负载的同时,也把动态网站的优势也丧失掉了,许多动态的功能也就不能使用了,如果在静态页面中 使用一些动态的功能?javascript应该是一个最好的方法,JS结合AJAX和cookie便可完美打造出静态页面的动态效果,同时也会大大降低服 务器压力.
下边主要来说说JS对cookie的读写操作
得到某个cookie的值
1. function
getCookie(
name
)
{
2. var
start =
document.cookie
.indexOf
(
name
+
"="
)
;
3. var
len =
start+
name
.length
+
1
;
4. if
(
(
!
start)
&&
(
name
!=
document.cookie
.substring
(
0
,
name
.length
)
)
)
return
null
;
5. if
(
start ==
-
1
)
return
null
;
6. var
end =
document.cookie
.indexOf
(
";"
,
len)
;
7. if
(
end ==
-
1
)
end =
document.cookie
.length
;
8. return
decodeURIComponent(
document.cookie
.substring
(
len,
end)
)
;
9. }
设置cookie的值
1. function
setCookie(
name
,
value,
expires,
path,
domain,
secure)
{
2. var
today =
new
Date(
)
;
3. today
.setTime
(
today.getTime
(
)
)
;
4. if
(
expires)
5. {
6. expires
=
expires *
1000
*
60
*
60
*
24
;
7. }
8. var
expires_date =
new
Date(
today.getTime
(
)
+
(
expires)
)
;
9. value
=
encodeURIComponent(
unescape(
value)
)
;
10. document
.cookie
=
name
+
'='
+
value+
11. (
(
expires )
?
';expires='
+
expires_date.toGMTString
(
)
:
''
)
+
12. (
(
path )
?
';path='
+
path :
''
)
+
13. (
(
domain )
?
';domain='
+
domain :
''
)
+
14. (
(
secure )
?
';secure'
:
''
)
;
15. }
删除cookie的值
1. function
delAllCookie(
)
2. {
3. tmpArr
=
document.cookie
.split
(
";"
)
;
4. delKey
=
new
Array(
)
;
5. for
(
i in
tmpArr)
6. {
7. if
(
tmpArr[
i]
.indexOf
(
"mykeywords"
)
!=
-
1
)
8. {
9. delKey
.push
(
decodeURIComponent(
tmpArr[
i]
.split
(
"="
)
[
0
]
)
)
;
10. }
11. }
12. today
=
new
Date(
)
;
13. today
.setTime
(
today.getTime
(
)
-
10000
)
;
14. for
(
i in
delKey)
15. {
16. name
=
delKey[
i]
;
17. document
.cookie
=
name
+
"='';expires="
+
today.toGMTString
(
)
;
18. }
19. tmpArr
=
delKey =
today =
""
;
20. }
由于JS上无法直接删除cookie所以采用过期的方式来删除cookie上边的例子是删除多个的,想单独删除某个值的时候参照添加单个 cookie
1. //删除cookie的某个值
2. function
delCookie(
value)
3. {
4. len
=
keywords.length
;
5. for
(
i in
keywords)
6. {
7. if
(
keywords[
i]
==
value)
8. {
9. keywords
.splice
(
i,
1
)
;
10. }
11. }
12.
13. if
(
keywords.length
==
0
)
14. {
15. delAllCookie
(
)
;
16. }
17. }
decodeURIComponent 对UTF-8的字符进行解码
encodeURIComponent 对字符进行编码 UTF-8
可以用来和UTF-8的程序文件进行交互
JS操作cookie的BUG
当不同级目录设置操作cookie的时候,下级目录可以读取上级目录,但是不能对上级目录设置的COOKIE进行直接操作,如果对数组类型的 cookie进行操作时,下级目录会自动复制上级目录中的cookie导致cookie会现问题(会出现两个一样的cookie),所以在不同级目录中最 好不要操作数同一个组类型的cookie
http://www.phpabc.cn/jquery-cookie-shi-yong.html
jquery cookie 使用
八月 7th, 2010 hew Posted in JQuery | No Comments »
基本用法:
var
name
=
$.cookie
(
"inpName"
)
;
//取值
$.cookie
(
"inpName"
,
'123'
)
;
//写值
$.cookie
(
"inpName"
,
''
)
;
//删除值
先开始 也是用基本的
$.cookie
(
"inpName"
,
'123'
)
;
//写值
后来出现了问题 保存的Cookie 时间 太短 没有写Cookie的保持时间好像是保持到关闭浏览器
$.cookie
(
"inpName"
,
$(
"#inpName"
)
.val
(
)
,
{
expires:
30
}
)
;
使用这个 使用了几天发现还是有问题 例如同一个域名下
http://www.jeanwen.com/blog/page/ 保存用的的登录名
但是 在 http://www.jeanwen.com/soft/page/ 下就没有登录用户名!!!
应该是domain 的问题
修改如下:
$.cookie
(
"inpName"
,
$(
"#inpName"
)
.val
(
)
,
{
expires:
30
,
path:
'/'
,
domain:
'www.jeanwen.com'
}
)
;