我尝试通过javascript删除域名下的所有cookies,但是不知道如何实现?如果知道一个cookie名字, 我可以设定它为空和过期时间,例如这样的方式:

var mydate = new Date(); mydate.setTime(mydate.getTime() - 1); document.cookie = "username=; expires=" + mydate.toGMTString();

但是我想删除所有的cookies,没有好的办法了,请大家帮着提供些可行的方案。

2010-10-28 15:10:23

2 Answers

<script>
var arr = document.cookie.split(";");  
for(var i=0,len=arr.length;i<len;i++){  
var item = arr[i].split("=");  
document.writeln(item[0]);//output all cookie's name from this domain
}  
</script>
cookie操作相关
$.cookie = { /** * 读取cookie * * @param {String} n=名称 * @return {String} cookie值 * @example * $.cookie.get('id_test'); */ get:function(n){ var m = document.cookie.match(new RegExp( "(^| )"+n+"=([^;]*)(;|$)")); return !m ? "":unescape(m[2]); }, /** * 设置cookie * @param {String} name cookie名称 --必填 * @param {String} value cookie值 --必填 * @param {String} domain 所在域名 * @param {String} path 所在路径 * @param {Number} hour 存活时间,单位:小时 * @example * $.cookie.set('value1','cookieval',"id.qq.com","/test",24); //设置cookie */ set:function(name,value,domain,path,hour){ var expire = new Date(); expire.setTime(expire.getTime() + (hour?3600000 * hour:30*24*60*60*1000)); document.cookie = name + "=" + value + "; " + "expires=" + expire.toGMTString()+"; path="+ (path ? path :"/")+ "; " + (domain ? ("domain=" + domain + ";") : ""); }, /** * 删除指定cookie,复写为过期 !!注意path要严格匹配, /id 不同于/id/ * * @param {String} name cookie名称 * @param {String} domain 所在域 * @param {String} path 所在路径 * @example * $.cookie.del('id_test'); //删除cookie */ del : function(name, domain, path) { document.cookie = name + "=; expires=Mon, 26 Jul 1997 05:00:00 GMT; path="+ (path ? path :"/")+ "; " + (domain ? ("domain=" + domain + ";") : ""); }, /** * 删除所有cookie -- 这里暂时不包括目录下的cookie * @example * $.cookie.clear(); //删除所有cookie */ clear:function(){ var rs = document.cookie.match(new RegExp("([^ ;][^;]*)(?=(=[^;]*)(;|$))", "gi")); // 删除所有cookie for (var i in rs){ document.cookie = rs[i] + "=;expires=Mon, 26 Jul 1997 05:00:00 GMT; path=/; " ; } }, /** * uin -- 针对业务,对外开源请删除 * * @return {String} uin值 * @example * $.cookie.uin(); */ uin:function(){ var u = $.cookie.get("uin"); return !u?null:parseInt(u.substring(1, u.length),10); } };
2010-10-28 17:13:19
//清空所有cookie
document.cookie = "";

再补充一个原生的删指定域名下的cookie

function deleteDomainCookies(domain) { var cookies = document.cookie.split(/; */); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; if ( cookie.indexOf( domain ) !=-1 ) { var eqPos = cookie.indexOf("="); var name = cookie.substr(0, eqPos); document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=" + domain; } } }
2010-10-28 18:24:49
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制