iteye_3983 2009-11-30 11:11
浏览 218
已采纳

javascript 操作cookie 删除问题

因为我们要做个播放器,需要用COOKIE 保存用户的试听列表。
测试的时候发现个问题:
1、单个删除,只要不是最后一个 都是OK的;
2、清空时 在IE中无效,在Firefox中可以清空 ,但是如果再点试听 就无法写入cookie。
3、IE中单个删除最后一条后,前面删除的所有的记录又重新读取出来了;
4、Firefox中单个删除最后一条后 效果跟清空一样。。。
哪位大大。帮忙搞定一下。。。急啊!!!!!
读写cookie代码如下:
这是清空代码
[code="javascript"]this.deleteAll=function(key)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
document.cookie = key + "=''" + "; expires="+ exp.toGMTString();
};[/code]
这是set代码 单个删除的时候也是用这个
[code="javascript"]
this.setCookie=function(key,value)
{
var expires_i = 1000*60*60*24;
var expires_date=new Date(new Date().getTime()+expires_i);
document.cookie=key+"="+escape(value)+";expires="+expires_date.toGMTString();
};
[/code]

这是获取cookie
[code="javascript"]
    this.getCookie=function(key)
{
    var arg = key+"=";
    var tem=document.cookie;
    if(tem!=null)
    {
        var pos1 = tem.indexOf(arg);
        var pos2 = tem.indexOf(";",pos1);
        if (pos1==-1){return null;}
        if (pos2==-1){pos2=tem.length;}
        tem=tem.substring((pos1+arg.length),pos2);
        return unescape(tem);
    }
    return "";
};
[/code]
  • 写回答

2条回答 默认 最新

  • 马勒格彼得 2009-11-30 11:25
    关注

    /**

    • cookie管理对象
      /
      CookieUtil={
      /
      *
      • 设置Cookie
      • @param {string} 设置cookie的名称
      • @param {string} 设置cookie的值
      • @param {object} 其他选项{是一个对象作为参数}
        /
        set : function(name,value,option){
        var str=name+"="+escape(value);
        if(option){
        if(option.expireDays){//过期日期
        var date=new Date();
        var ms=option.expireDays*24*3600*1000;
        date.setTime(date.getTime()+ms);
        str+="; expires="+date.toGMTString();
        }
        if(option.path)str+="; path="+path; //设置访问路径
        if(option.domain)str+="; domain"+domain; //设置访问主机
        if(option.secure)str+="; true"; //设置安全性
        }
        document.cookie=str;
        },
        /
        *
      • 获取Cookie
      • @param {string} cookie的名称
      • @return {string} cookie的值
        /
        get : function(name){
        var cookieArray=document.cookie.split("; "); //得到分割的cookie名值对
        for(var i=0;i<cookieArray.length;i++){
        var arr=cookieArray[i].split("="); //将名和值分开
        if(arr[0]==name)
        return unescape(arr[1]); //如果是指定的cookie,则返回它的值
        }
        return "";
        },
        /
        *
      • 删除Cookie
      • @param {string} 需要删除的cookie名称
        */
        del : function(){
        this.set(name,"",{expireDays:-1}); //将过期时间设置为过去来删除一个cookie
        }
        };
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料