热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于document.cookie的使用javascript_javascript技巧

设置cookie每个cookie都是一个名值对,可以把下面这样一个字符串赋值给document.cookie:
document.COOKIE="userId=828";
如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:
document.COOKIE="userId=828; userName=hulk";
在COOKIE的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在COOKIE的名中做

到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编

码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于

COOKIE值中,而且使用此种方案还可以避免中文乱码的出现。例如:
document.COOKIE="str="+escape("I love ajax");
相当于:
document.COOKIE="str=I%20love%20ajax";
当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的COOKIE值,

这在前面已经介绍过。
尽管document.COOKIE看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变

它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:
document.COOKIE="userId=828";
document.COOKIE="userName=hulk";
这时浏览器将维护两个COOKIE,分别是userId和userName,因此给document.COOKIE赋值更像执

行类似这样的语句:
document.addCOOKIE("userId=828");
document.addCOOKIE("userName=hulk");
事实上,浏览器就是按照这样的方式来设置COOKIE的,如果要改变一个COOKIE的值,只需重新赋

值,例如:
document.COOKIE="userId=929";
这样就将名为userId的COOKIE值设置为了929。

获取COOKIE的值
下面介绍如何获取COOKIE的值。COOKIE的值可以由document.COOKIE直接获得:
var strCOOKIE=document.COOKIE;
这将获得以分号隔开的多个名/值对所组成的字符串,这些名/值对包括了该域名下的所有COOKIE

。例如:

图7.1显示了输出的COOKIE值。由此可见,只能够一次获取所有的COOKIE值,而不能指定COOKIE

名称来获得指定的值,这正是处理COOKIE值最麻烦的一部分。用户必须自己分析这个字符串,来

获取指定的COOKIE值,例如,要获取userId的值,可以这样实现:

这样就得到了单个COOKIE的值

用类似的方法,可以获取一个或多个COOKIE的值,其主要的技巧仍然是字符串和数组的相关操作。

给COOKIE设置终止日期
到现在为止,所有的COOKIE都是单会话COOKIE,即浏览器关闭后这些COOKIE将会丢失,事实上这

些COOKIE仅仅是存储在内存中,而没有建立相应的硬盘文件。
在实际开发中,COOKIE常常需要长期保存,例如保存用户登录的状态。这可以用下面的选项来实

现:
document.COOKIE="userId=828; expires=GMT_String";
其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将userId这个COOKIE设置为

GMT_String表示的过期时间,超过这个时间,COOKIE将消失,不可访问。例如:如果要将COOKIE

设置为10天后过期,可以这样实现:


删除COOKIE
为了删除一个COOKIE,可以将其过期时间设定为一个过去的时间,例如:

指定可访问COOKIE的路径
默认情况下,如果在某个页面创建了一个COOKIE,那么该页面所在目录中的其他页面也可以访问

该COOKIE。如果这个目录下还有子目录,则在子目录中也可以访问。例如在

www.xxxx.com/html/a.html中所创建的COOKIE,可以被www.xxxx.com/html/b.html或

www.xxx.com/ html/ some/c.html所访问,但不能被www.xxxx.com/d.html访问。
为了控制COOKIE可以访问的目录,需要使用path参数设置COOKIE,语法如下:
document.COOKIE="name=value; path=COOKIEDir";
其中COOKIEDir表示可访问COOKIE的目录。例如:
document.COOKIE="userId=320; path=/shop";
就表示当前COOKIE仅能在shop目录下使用。
如果要使COOKIE在整个网站下可用,可以将COOKIE_dir指定为根目录,例如:
document.COOKIE="userId=320; path=/";


指定可访问COOKIE的主机名
和路径类似,主机名是指同一个域下的不同主机,例如:www.google.com和gmail.google.com就

是两个不同的主机名。默认情况下,一个主机中创建的COOKIE在另一个主机下是不能被访问的,

但可以通过domain参数来实现对其的控制,其语法格式为:
document.COOKIE="name=value; domain=COOKIEDomain";
以google为例,要实现跨主机访问,可以写为:
document.COOKIE="name=value;domain=.google.com";
这样,所有google.com下的主机都可以访问该COOKIE。


综合示例:构造通用的COOKIE处理函数
COOKIE的处理过程比较复杂,并具有一定的相似性。因此可以定义几个函数来完成COOKIE的通用

操作,从而实现代码的复用。下面列出了常用的COOKIE操作及其函数实现。
1.添加一个COOKIE:addCOOKIE(name,value,expiresHours)
该函数接收3个参数:COOKIE名称,COOKIE值,以及在多少小时后过期。这里约定expiresHours为

0时不设定过期时间,即当浏览器关闭时COOKIE自动消失。该函数实现如下:

2.获取指定名称的COOKIE值:getCOOKIE(name)
该函数返回名称为name的COOKIE值,如果不存在则返回空,其实现如下:

3.删除指定名称的COOKIE:deleteCOOKIE(name)
该函数可以删除指定名称的COOKIE
推荐阅读
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
author-avatar
会飞的狼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有