javascript权威指南里面的一个cookie工具类实例,运行之后不太好,什么原因?

2012-12-21 20:36:15 +08:00
 yqyq1020
function Cookie(name){
this.$name = name;
var allcookies = document.cookie;
if (allcookies == "") return;
var cookies = allcookies.split(';');
var cookie = null;
for(var i=0;i<cookies.length;i++){
if (cookies[i].substring(0,name.length+1) == (name + "=")){
cookie = cookies[i];
break;
}
}
if (cookie == null) return;
var cookieval = cookie.substring(name.length+1);
var a = cookieval.split('&');
for(var i=0;i<a.length;i++);
a[i]=a[i].split(':');
for(var i=0;i<a.length;i++){
this[a[i][0]] = decodeURIComponent(a[i][1]);
}
}
Cookie.prototype.store = function(daysToLive,path,domain,secure){
var cookieval = "";
for(var prop in this){
if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))
continue;
if(cookieval !="")cookieval += '&';
cookieval += prop + ':' + encodeURIComponent(this[prop]);
}
var cookie = this.$name+'='+cookieval;
if(daysToLive || daysToLive == 0){
cookie += ";max-age" + (daysToLive*24*60*60);
}
if(path) cookie += ";path="+ path;
if(domain) cookie+= ";domain=" + domain;
if(secure) cookie+=";secure";
document.cookie=cookie;
}
Cookie.prototype.remove = function(path,domain,secure){
for(var prop in this){
if (prop.charAt(0) != '$' && typeof this[prop] != 'function')
delete this[prop];
}
this.store(0,path,domain,secure);
}
Cookie.enabled = function(){
if(navigator.cookieEnabled !=undefined) return navigaror.cookieEnabled;
if(Cookie.enabled.cache !=undefined) return Cookie.enabled.cache;
document.cookie="testcookie=test;max-age=1000";
var cookies=document.cookie;
if(cookies.indexOf("testcookie=test") == -1){
return Cookie.enabled.cache = false;
}
else{
document.cookie="testcookie=test;max-age=0";
return Cookie.enabled.cache = true;
}
}
/*下面是一个使用该cookie工具类的实例*/
var cookie=new Cookie("vistordata");
if(!cookie.name || !cookie.color){
cookie.name=prompt("What is your name:","");
cookie.color=prompt("What is your favorite color:","");
}
if(!cookie.visits)cookie.visits=1;
else cookie.visits++;
cookie.store(10);
document.write('<h1 style="color:'+cookie.color+'">'+
'Welcome,'+cookie.name+'!'+'</h1>'+
'<p>You have visited '+cookie.visits+'times.'+
'<button onclick="window.cookie.remove();">Forget me</button>');

上面的实例在chrome里运行后,刷新一次就要求你重新输入信息,不能直接读取cookie显示出来,什么原因求解答。。。
2954 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/55505

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX