js对cookie操作

fengzivip 2010-08-27 10:15:13
我想利用JS来新建cookie,要求存储的形式能像对象那样,有标识,可以任意添加属性,可以修改某条数据。。。。


另外问一下一个网站是不是不能存在多个cookie呢?
...全文
777 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiangwaer 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hookee 的回复:]
cookie就是一个http头部的字符串,具体的大小限制与浏览器相关。
转一个类:

JScript code

String.prototype.Trim = function()
{
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}

function JSCookie()
{……
[/Quote]
学习了
ziyouren521125 2010-11-20
  • 打赏
  • 举报
回复
上面少一句话:

expires = '; expires=' + date.toUTCString();
添加在
else
{
date=options.expires;
}
后面
ziyouren521125 2010-11-20
  • 打赏
  • 举报
回复
共享一个我得
Cookie(name,value) //创建+修改
Cookie(name,null) //删除
Cookie(name) //获取

function Cookie(name,value,options)
{
if(typeof value!="undefined")
{
options=options||{};
if(value===null)
{
value='';
options.expires=-1;//设置失效时间
}
var expires='';
//判断类型是number,分别设置时间
if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString))
{
var date;
if(typeof options.expires=='number')
{
//设置时间格式,把天转换为毫秒添加倒时间对象
date=new Date();
date.setTime(date.getTime()+(options.expires*24*60*60*1000));
}
else
{
date=options.expires;
}
}
var path=options.path?';path='+options.path:''; //路径
var domain=options.domain?';domain='+options.domain:''; //设置域
var secure=options.secure?';secure':''; //安全措施,true直接设置
//把所有字符串存入数组,然后调用Join()方法转换为字符串 并写入cookie
document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');
}
else
{
var CookieValue=null;
if(document.cookie&&document.cookie!='')
{
var cookie=document.cookie.split(';');
for(var i=0;i<cookie.length;i++)
{
//var cookie=(cookie[i]||"").replace(/^\s+|\s+$/g,"");
var cookie=cookie[i];
if(cookie.substring(0,name.length+1)==(name+'='))
{
CookieValue=decodeURIComponent(cookie.substring(name.length+1));
break;
}
}
}
return CookieValue;
}
}
kewei8976 2010-08-30
  • 打赏
  • 举报
回复
学习了,谢谢楼主
plzzz 2010-08-29
  • 打赏
  • 举报
回复
Cookie 只有4k大小,只能存'字符串',4k如果不够用,用flash来扩展(默认100K)
feiliubo 2010-08-29
  • 打赏
  • 举报
回复
不错,学习一下,^_^
root_lee 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hookee 的回复:]

cookie就是一个http头部的字符串,具体的大小限制与浏览器相关。
转一个类:
JScript code

String.prototype.Trim = function()
{
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}

function JSCookie()
{
t……
[/Quote]
很好,mark下
hoojo 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hookee 的回复:]
cookie就是一个http头部的字符串,具体的大小限制与浏览器相关。
转一个类:

JScript code

String.prototype.Trim = function()
{
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}

function JSCookie()
{……
[/Quote]
+

也可以参考:http://blog.csdn.net/IBM_hoojo/archive/2010/08/04/5787765.aspx
fengzivip 2010-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hookee 的回复:]

cookie就是一个http头部的字符串,具体的大小限制与浏览器相关。
转一个类:
JScript code

String.prototype.Trim = function()
{
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}

function JSCookie()
{
t……
[/Quote]

如果我想更新一条数据呢?
  • 打赏
  • 举报
回复
嗯,不错,复制下
hookee 2010-08-27
  • 打赏
  • 举报
回复
cookie就是一个http头部的字符串,具体的大小限制与浏览器相关。
转一个类:

String.prototype.Trim = function()
{
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}

function JSCookie()
{
this.GetCookie = function(key)
{
var cookie = document.cookie;
var cookieArray = cookie.split(';');
var getvalue = "";
for(var i = 0;i<cookieArray.length;i++)
{

if(cookieArray[i].Trim().substr(0,key.length) == key)
{
getvalue = cookieArray[i].Trim().substr(key.length + 1);
break;
}
}

return getvalue;
};
this.GetChild = function(cookiekey,childkey)
{
var child = this.GetCookie(cookiekey);
var childs = child.split('&');
var getvalue = "";

for(var i = 0;i < childs.length;i++)
{
if(childs[i].Trim().substr(0,childkey.length) == childkey)
{
getvalue = childs[i].Trim().substr(childkey.length + 1);
break;
}
}
return getvalue;
};
this.SetCookie = function(key,value,expire,domain,path)
{
var cookie = "";
if(key != null && value != null)
cookie += key + "=" + value + ";";
if(expire != null)
cookie += "expires=" + expire.toGMTString() + ";";
if(domain != null)
cookie += "domain=" + domain + ";";
if(path != null)
cookie += "path=" + path + ";";
document.cookie = cookie;
};
this.Expire = function(key)
{
expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() - 1);
var cookie = " " + key + "=e;expires=" + expire_time + ";"
document.cookie = cookie;
}
}


用法:
一、设置cookie
var cookie = new JSCookie();
//普通设置
cookie.SetCookie("key1","val1");

//过期时间为一年
var expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() + 1);
cookie.SetCookie("key2","val2",expire_time);

//设置域及路径,带过期时间
cookie.SetCookie("key3","val3",expire_time,".cnblogs.com","/");

//设置带子键的cookie,子键分别是k1,k2,k3
cookie.SetCookie("key4","k1=1&k2=2&k3=3");

二、读取cookie
//简单获取
cookie.GetCookie("key1");
cookie.GetCookie("key2");
cookie.GetCookie("key3");
cookie.GetCookie("key4");
//获取key4的子键k1值
cookie.GetChild("key4","k1");

三、删除
cookie.Expire("key1");
cookie.Expire("key2");
cookie.Expire("key3");
cookie.Expire("key4");

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧