我正在尝试对javascript cookie进行演示测试。请找到我为测试编写的代码。
<html>
<head>
<script type='text/javascript' >
function setcookie()
{
alert("check if cookie avail:" +document.cookie.split(';'));
var dt=new Date();
document.cookie='name=test';
document.cookie='expires='+dt.toUTCString()+';'
alert("now cookie val:" +document.cookie.split(';'));
dt.setDate(dt.getDate()-1);
document.cookie = "expires=" + dt.toUTCString() + ";"
alert("after deletion cookie val:" + document.cookie.split(';'));
}
</script>
</head>
<body>
<input id='txt' onchange='setcookie()' />
</body>
</html>
代码将起作用,
最初,这将显示该浏览器中已存在的cookie,然后我尝试将cookie设置为'name = test',并在1天到期时间。使用警报我可以看到该cookie中设置的值。在下一行中,我尝试通过将过期日期设置为当前日期-1来删除cookie。如果我使用alert来打印cookie值,则会显示cookie,其过期日期为currentdate-1。
我的问题是,
请告诉我为什么浏览器会出现这种差异。
答案 0 :(得分:1)
这不是设置到期
document.cookie='name=test';
document.cookie='expires='+dt.toUTCString()+';'
这是
document.cookie='name=test; expires='+dt.toUTCString()+';'
最好是采用经过良好测试的cookie代码并使用
如果你使用jQuery
,试试这个或使用jQuery插件// cookie.js file
var daysToKeep = 14; // default cookie life...
var today = new Date();
var expiryDate = new Date(today.getTime() + (daysToKeep * 86400000));
/* Cookie functions originally by Bill Dortsch */
function setCookie (name,value,expires,path,theDomain,secure) {
value = escape(value);
var theCookie = name + "=" + value +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((theDomain) ? "; domain=" + theDomain : "") +
((secure) ? "; secure" : "");
document.cookie = theCookie;
}
function getCookie(Name) {
var search = Name + "="
if (document.cookie.length > 0) { // if there are any cookies
var offset = document.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length
// set index of beginning of value
var end = document.cookie.indexOf(";", offset)
// set index of end of cookie value
if (end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
}
}
function delCookie(name,path,domain) {
if (getCookie(name)) document.cookie = name + "=" +
((path) ? ";path=" + path : "") +
((domain) ? ";domain=" + domain : "") +
";expires=Thu, 01-Jan-70 00:00:01 GMT";
}