前端 jquery中的cookie插件

cireric · June 12, 2020 · 8 hits

Cookie 是由 Web 服务器保存在用户浏览器上的小文本文件,它包含有关用户的本地终端上的数据。

jQuery 提供了一个十分简单的插件(名称也是 Cookie)来管理网站的 Cookie。

下载地址http://github.com/carhartl/jquery-cookie

例子: 当在用户名字段填写用户名后,单击下面的 “记住用户名” 复选框后,再次打开这个页面,发现用户名字段上已经被自动赋值(之前所填写的用户名)

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<script src="js/jquery.cookie.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
var COOKIE_NAME = 'username';
if( $.cookie(COOKIE_NAME) ){
$("#username").val( $.cookie(COOKIE_NAME) );
}
$("#check").click(function(){
if(this.checked){
$.cookie(COOKIE_NAME, $("#username").val() , { path: '/', expires: 10 });
}else{
$.cookie(COOKIE_NAME, null, { path: '/' });
}
});

});

</script>
</head>
<body>
用户名:<input type="text" name="username" id="username" /> <br/>
<input type="checkbox" name="check" id="check"/>记住用户名
</body>
</html>

image

调试:

使用 chrome 调试,发现无法实现效果

尝试获取 cookie 文件也失效

image

原因:

chrome不支持js 在本地操作 cookie。据测试,除了 chrome 浏览器外,其他主流浏览器(ie、firefox 等)都支持 js 在本地操作 cookie。当然部署到服务器上所有浏览器都是支持的。

扩展:

操作 cookie 失效还有一个原因:浏览器设置成不支持 Cookie。
可以通过以下代码测试浏览器是否支持 Cookie 或者 Cookie 是否被禁用?

1
2
3
4
5
6
7
8
9
10
11
var dt = new Date(); 
dt.setSeconds(dt.getSeconds() + 60);
document.cookie = "cookietest=1; expires=" + dt.toGMTString();
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;
if(!cookiesEnabled) {
//没有启用cookie
alert("没有启用cookie ");
} else{
//已经启用cookie
alert("已经启用cookie ");
}

经测试,chrome 的确没有启用 Cookie,因此上述例子达不到效果

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.