开发者社区> 长征3号> 正文

javascript操作cookie

简介:
+关注继续查看
问题:
    使得在访问页面的时候能够沿用上次的设置,或者在不同的页面间共享数据。比如用户在访问网站的时候设置了页面字体的大小,那么会希望下次访问的时候仍然能使用同样的设置进行浏览,而不用重复设置。
解决方案:
    在用户浏览页面并进行设置时,将这些设置保存在cookie中,下次访问的时候读取cookie中的设置。
    参考下面的脚本:

    // utility function to retrieve an expiration data in proper format;
    function getExpDate(days, hours, minutes)
    {
        
var expDate = new Date();
        
if(typeof(days) == "number" && typeof(hours) == "number" && typeof(hours) == "number")
        {
            expDate.setDate(expDate.getDate() 
+ parseInt(days));
            expDate.setHours(expDate.getHours() 
+ parseInt(hours));
            expDate.setMinutes(expDate.getMinutes() 
+ parseInt(minutes));
            
return expDate.toGMTString();
        }
    }

    
//utility function called by getCookie()
    function getCookieVal(offset)
    {
        
var endstr = document.cookie.indexOf(";", offset);
        
if(endstr == -1)
        {
            endstr 
= document.cookie.length;
        }
        
return unescape(document.cookie.substring(offset, endstr));
    }

    
// primary function to retrieve cookie by name
    function getCookie(name)
    {
        
var arg = name + "=";
        
var alen = arg.length;
        
var clen = document.cookie.length;
        
var i = 0;
        
while(i < clen)
        {
            
var j = i + alen;
            
if (document.cookie.substring(i, j) == arg)
            {
                
return getCookieVal(j);
            }
            i 
= document.cookie.indexOf(" ", i) + 1;
            
if(i == 0break;
        }
        
return;
    }

    
// store cookie value with optional details as needed
    function setCookie(name, value, expires, path, domain, secure)
    {
        document.cookie 
= name + "=" + escape(value) +
            ((expires) 
? "; expires=" + expires : ""+
            ((path) 
? "; path=" + path : ""+
            ((domain) 
? "; domain=" + domain : ""+
            ((secure) 
? "; secure" : "");
    }

    
// remove the cookie by setting ancient expiration date
    function deleteCookie(name,path,domain) 
    {
        
if(getCookie(name))
        {
            document.cookie 
= name + "=" +
                ((path) 
? "; path=" + path : ""+
                ((domain) 
? "; domain=" + domain : ""+
                
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
    }

    使用getCookie(name)函数来读取cookie中保存的值,参数name为cookie项的名称。如果该cookie项不存在则返回一个空字符串。
    使用setCookie()函数来保存cookie项的值,其中第一、二两个参数分别为cookie项的名称和值。如果想为其设置一个过期时间,那么就需要设置第三个参数,这里需要通过getExpDate()获得一个正确格式的参数。
    最后,使用deleteCookie()来删除一个已存在的cookie项,实际上是通过让该项过期。
    cookie将数据保存在客户端。页面的脚本只能读取所在域和服务器的cookie值,如果域内有多个服务器,那么需要设置第五个参数,以指定服务器。浏览器的容量一般限定为每服务器20个name/value对,每个cookie项不超过4000个字符,更现实点,单个cookie项应少于2000字符,也就是说不要用cookie在客户端保存大容量数据。
    不同的浏览器保存cookie的方式也有所不同。IE为每个域的cookie建立一个文本文件,而Netscape则将所有的cookie存储在同一个文本文件中。
    注意:cookie存放在客户端,所以会受到浏览器设置的影响,比如用户可能会禁用cookie。要检测浏览器是否支持cookie,使用属性navigator.cookieEnabled来判断。


    参考: (Oreilly) Java Script And Dhtml Cookbook.chm


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2006/10/11/javascriptcookie.html,如需转载请自行联系原作者。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
并发中的Native方法,CAS操作与ABA问题
Java中,通过JNI(Java Native Interface,java本地接口)来实现本地化,访问操作系统底层,如系统硬件等。
2128 0
bash 常用操作
删除不为空的文件夹 rm -rf dir_name
546 0
javascript中的数组操作
1、数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值     要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
672 0
as3 操作excel表格
原文 http://blog.sina.com.cn/s/blog_8c26f28301014z2z.html   最近做一个小东西,用到了rt这样的东西,在网上搜了一下,确实有这个功能,但是对中文的支持不是很好,而且,是针对flex 的,纯的as3项目用它就一直报错,因为as项目里面没有Arr...
1423 0
Javascript操作DOM常用API总结
文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识。
880 0
javascript中对字符串的操作总结
原文:javascript中对字符串的操作总结 没听过一句话吗?程序员的世界,不处理字符串就是处理数组。这是群里的一位前辈和我说的,显然这和我之前理解的DOM是javascript的核心的不同的,看了几个面试题的内容,感觉前辈说的话非常的有道理,因此总结下,javascript中对字符串的操作。
841 0
javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQue
原文:javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、j...
2218 0
+关注
157
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载