《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编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...
《JavaScript权威指南》第六版是一部备受推崇的教程,旨在为学习者提供全面、深入的JavaScript知识。这本书不仅适用于初学者,也适合有一定经验的开发者巩固和提升技能。 在JavaScript的世界里,了解基础语法是至关...
《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...
《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...
《JavaScript权威指南(第六版)》是IT业界内广受认可的一本专业书籍,专门针对JavaScript语言及其应用进行了深入的探讨。在介绍此书时,首先要强调其内容的权威性以及覆盖的广泛性。本书不仅仅局限于JavaScript的...
《JavaScript权威指南(第六版)》是一本深受程序员喜爱的经典著作,由美国知名技术作家David Flanagan撰写。这本书深入浅出地介绍了JavaScript这门广泛应用于Web开发的重要编程语言,同时也涵盖了浏览器提供的...
### JavaScript权威指南(第四版) #### 1. JavaScript 概述 - **1.1 JavaScript 版本**:介绍 JavaScript 的历史版本,包括最初的 JavaScript 1.1 版本及其特性。 - **1.2 JavaScript 组件**:阐述了构成 ...
《JavaScript权威指南(第6版)》要讲述的内容涵盖JavaScript语言本身,以及web浏览器所实现的JavaScript API。本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增...
通过列举JavaScript应用的最佳实践和示例,本书展示了如何将该语言集成到浏览器环境中,及如何在符合标准的网站中应用这些已通过实践验证的编码技术。 本书内容: JavaScript应用程序的结构,包括基本的语句和...
JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发中的核心组成部分。它与Java虽然名字相似,但实际上是两种完全不同的编程语言。本资源提供的"javascript中文电子书"包含了全面的JavaScript知识,对于初学...
【PHP开发实践权威指南源码】是一份针对PHP编程语言深入实践的重要资源,它涵盖了从基础到高级的各种PHP开发技术,旨在帮助开发者提升技能并掌握实际项目中的应用。通过这份源码,我们可以学习到以下几个核心的PHP...
《jQuery权威指南》除了理论知识丰富而全面外,它还有一个最大的特点就是注重实战,每个知识点都有一个完整的案例,包括需求分析、代码实现和结果展示三个部分,而且还包含两个综合性的案例,它的实践性之强是目前...
第一个简单的jQuery程序 jQuery事件的链式写法 控制jQuery对象 jQuery控制CSS样式 第2章 使用JavaScript实现隔行变色 使用jQuery选择器实现隔行变色 JavaScript代码检测页面元素 jQuery代码检测页面元素 ...
jQuery权威指南 完整版 pdf 和源码打包!如果觉得好,请删除本资源并购买原版。学习,勤为功。资料,藏为废。书是用来看的,不是用来收藏的。前 言 第1章 jquery开发入门/1 1.1 jquery概述/2 1.1.1 认识...
### Jetty权威指南知识点梳理 #### 一、Jetty简介 **1.1 Jetty功能介绍** Jetty是一个完全由Java编写的高性能HTTP服务器及servlet容器,它不仅能够作为一个独立的服务运行,还具备强大的可嵌入性。Jetty的设计...
"JavaScript宝典(第四版)"是一本旨在覆盖JavaScript从基础到进阶知识的权威指南,适用于不同水平的学习者,无论是初入编程的新手还是寻求提升的开发者,都能从中受益。 1. **JavaScript基础** - 变量与数据类型...
5. **图形绘制**:Canvas元素提供了一个可编程的2D画布,SVG(Scalable Vector Graphics)则支持矢量图形,两者都极大地扩展了网页的视觉效果。 6. **Web Workers和Web Storage**:Web Workers用于后台处理,提高...