JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

JavaScript设置cookie

在JavaScript中,使用 document.cookie 来设置 cookie 。

语法:
    document.cookie=" name=value ; expire=GMT_String ; path=cookieDir ; domain=cookieDomain "
对cookie格式的说明
键/值 对 说明
name=value 必需。设置cookie的名称和值,一次只能设置一个

在cookie的名称或值中不会出现分号( ; )、逗号( , )、等号( = )、空格以及中文等,否则将会被浏览器编码。在cookie的名称中做到这点很容易(名称一般是开发人员设定好的),但是保存的值是不确定的,如何来存储这些值呢?方法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值 中,而且使用此种方案还可以避免中文乱码的出现。

例如,将“小明”存入cookie:
document.cookie="username="+eacape("小明");
expire=GMT_String 可选。设置cookie的过期时间。

默认情况下(不设置expire),用户关闭浏览器时会销毁cookie,这些cookie仅仅是存储在内存中,而没有建立相应的硬盘文件。在实际开发中,cookie 通常需要长期保存,例如保存用户登录的状态,可以通过设置 cookie 的过期时间来实现。

过期时间是以GMT格式表示的时间字符串,超过这个时间,cookie将消失,不可访问。

例如,如果要将cookie设置为10天后过期:
var date=new Date();  //  更多请参考 JavaScript Date 对象
var expireDays=10;
date.setTime(date.getTime()+expireDays*24*3600*1000);
path=cookieDir 可选。设置cookie的有效路径。

默认情况下(不设置path),cookie只在当前路径下有效,路径范围之外不能访问该cookie。例如,在 /javascript/jiaocheng/ 路径下设置的cookie,只能被 /javascript/jiaocheng/ 路径下的文件以及子目录下的文件访问。

要使 cookie 全站有效,请设置 path=/ 。
domain=cookieDomain 可选。设置cookie的有效域名。

默认情况下(不设置 domain),cookie 只在当前域名下有效。例如,在 demo.itxueyuan.org 下设置的 cookie ,不能在 javascript.itxueyuan.org 域名下访问。

要使 cookie 在 itxueyuan.org 的所有二级域名和主域名下都有效,请设置 domain=.itxueyuan.org

请看下面几个设置 cookie 的例子。

最简单的 cookie 设置:
document.cookie=" name=xiaoming ";
对 cookie 的值进行 escape() 编码:
var cookieValue=" 小明 ";
document.cookie=" name= "+escape(cookieValue) ;
设置有效路径为全站有效:
document.cookie=" name=xiaoming ; path=/ ";
设置过期时间为 1 天:
var date=new Date();  // 创建日期对象
var cookieExpire=date.getTime()+24*3600*1000;  // 以微妙计算
document.cookie=" name=xiaoming ; expire= "+cookieExpire;
举例,将IT学院会员的用户名和密码保存到cookie,过期时间一个月,全站有效,所有域名有效:
var username="小明";
var password="123456";
var expire=(new Date()).getTime()+1000*3600*24*30;
document.cookie = " username=" + escape(username) + " expire=" + expire + " ; path=/ ; domain=.itxueyuan.org ";
document.cookie = " password=" + escape(password) + " expire=" + expire + " ; path=/ ; domain=.itxueyuan.org ";