`
三月的雪
  • 浏览: 17300 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

《JavaScript权威指南》中的一个Cookie工具

阅读更多
《JavaScript权威指南》(第五版)中的一个Cookie工具,但是其中一处代码在IE下有问题,关掉所有IE窗口后cookie value没有保存。

原因是IE6,7,8,9都没有很好的支持max-age属性,所以针对IE使用expires属性代替。

以下是我修改后的代码。

Cookie.js

 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){
        if(window.ActiveXObject){   //update for ie 6,7,8,9
            var nDaysLater = (new Date()).getTime() + (daysToLive*24*60*60*1000);
            cookie += "; expires=" + (new Date(nDaysLater)).toGMTString();
        }
        else
            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 navigator.cookieEnabled;
    if(Cookie.enabled.cache != undefined)   return Cookie.enabled.cache;
    if(window.ActiveXObject)    //update for ie 6,7,8,9
        document.cookie = "testcookie=test; expires=" + (new Date((new Date()).getTime() + (10000*1000))).toGMTString();
    else
        document.cookie = "testcookie=test; max-age=10000";
    var cookies = document.cookie;
    if(cookies.indexOf("testcookie=test") == -1){
        return Cookie.enabled.cache = false;
    }else{
        if(window.ActiveXObject)    //update for ie 6,7,8,9
            document.cookie = "testcookie=test; expires=" + (new Date((new Date()).getTime() - (10000*1000))).toGMTString();
        else
            document.cookie = "testcookie=test; max-age=0";
        return Cookie.enabled.cache = true;
    }
}
 


分享到:
评论

相关推荐

    JavaScript权威指南(JavaScript犀牛书一本)

    《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...

    JavaScript权威指南 第6版 高清完整

    《JavaScript权威指南》第六版是一部备受推崇的教程,旨在为学习者提供全面、深入的JavaScript知识。这本书不仅适用于初学者,也适合有一定经验的开发者巩固和提升技能。 在JavaScript的世界里,了解基础语法是至关...

    JavaScript权威指南(第6版)

    《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...

    JavaScript权威指南(第6版)(中文版)

    《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...

    JavaScript权威指南(第六版)

    《JavaScript权威指南(第六版)》是IT业界内广受认可的一本专业书籍,专门针对JavaScript语言及其应用进行了深入的探讨。在介绍此书时,首先要强调其内容的权威性以及覆盖的广泛性。本书不仅仅局限于JavaScript的...

    [JavaScript权威指南(第六版)].(美).中文扫描版.zip

    《JavaScript权威指南(第六版)》是一本深受程序员喜爱的经典著作,由美国知名技术作家David Flanagan撰写。这本书深入浅出地介绍了JavaScript这门广泛应用于Web开发的重要编程语言,同时也涵盖了浏览器提供的...

    JavaScript 权威指南(第四版)

    ### JavaScript权威指南(第四版) #### 1. JavaScript 概述 - **1.1 JavaScript 版本**:介绍 JavaScript 的历史版本,包括最初的 JavaScript 1.1 版本及其特性。 - **1.2 JavaScript 组件**:阐述了构成 ...

    JavaScript权威指南(第6版) 中文版

    《JavaScript权威指南(第6版)》要讲述的内容涵盖JavaScript语言本身,以及web浏览器所实现的JavaScript API。本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增...

    《JavaScript学习指南(第2版)》[PDF]

    通过列举JavaScript应用的最佳实践和示例,本书展示了如何将该语言集成到浏览器环境中,及如何在符合标准的网站中应用这些已通过实践验证的编码技术。  本书内容:  JavaScript应用程序的结构,包括基本的语句和...

    javascript中文电子书

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发中的核心组成部分。它与Java虽然名字相似,但实际上是两种完全不同的编程语言。本资源提供的"javascript中文电子书"包含了全面的JavaScript知识,对于初学...

    PHP开发实践权威指南源码

    【PHP开发实践权威指南源码】是一份针对PHP编程语言深入实践的重要资源,它涵盖了从基础到高级的各种PHP开发技术,旨在帮助开发者提升技能并掌握实际项目中的应用。通过这份源码,我们可以学习到以下几个核心的PHP...

    jQuery权威指南-源代码

    《jQuery权威指南》除了理论知识丰富而全面外,它还有一个最大的特点就是注重实战,每个知识点都有一个完整的案例,包括需求分析、代码实现和结果展示三个部分,而且还包含两个综合性的案例,它的实践性之强是目前...

    JQuery权威指南源代码

    第一个简单的jQuery程序 jQuery事件的链式写法 控制jQuery对象 jQuery控制CSS样式 第2章 使用JavaScript实现隔行变色 使用jQuery选择器实现隔行变色 JavaScript代码检测页面元素 jQuery代码检测页面元素 ...

    jQuery权威指南366页完整版pdf和源码打包

    jQuery权威指南 完整版 pdf 和源码打包!如果觉得好,请删除本资源并购买原版。学习,勤为功。资料,藏为废。书是用来看的,不是用来收藏的。前 言 第1章 jquery开发入门/1 1.1 jquery概述/2 1.1.1 认识...

    Jetty权威指南.pdf

    ### Jetty权威指南知识点梳理 #### 一、Jetty简介 **1.1 Jetty功能介绍** Jetty是一个完全由Java编写的高性能HTTP服务器及servlet容器,它不仅能够作为一个独立的服务运行,还具备强大的可嵌入性。Jetty的设计...

    JavaScript+宝典(第四版)

    "JavaScript宝典(第四版)"是一本旨在覆盖JavaScript从基础到进阶知识的权威指南,适用于不同水平的学习者,无论是初入编程的新手还是寻求提升的开发者,都能从中受益。 1. **JavaScript基础** - 变量与数据类型...

    HTML5与CSS3权威指南_VisualStudio.2010_

    5. **图形绘制**:Canvas元素提供了一个可编程的2D画布,SVG(Scalable Vector Graphics)则支持矢量图形,两者都极大地扩展了网页的视觉效果。 6. **Web Workers和Web Storage**:Web Workers用于后台处理,提高...

Global site tag (gtag.js) - Google Analytics