6.6.2.htm
来自「一部非常好的javaScript教程」· HTM 代码 · 共 93 行
HTM
93 行
<html>
<head>
<title>Untitled Document</title>
<LINK REL ="stylesheet" TYPE = "text/css" HREF = ".../contents.css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<h2 align="center">使用 cookie</h2>
<p>虽然隐藏字段可以用于保存一定的状态信息,但显然仅局限于比较小的范围且只能在一次浏览器会话期间保存,如果要在更大的范围(例如整个网站)或更长的时效内保存状态信息,则需要使用
cookie。</p>
<p>
1. 什么是 cookie<p>
cookie 是一种保存持续状态信息和其他信息的一种方式,它表示由 Web 浏览器存储起来的一小组数据,通过这些数据可以在 Web 页内共享信息信息。一个典型的
cookie 中存储着与某个站点相关的用户信息,以便将来连接到该站点时使用。<p>
对于不同的浏览器,cookie 的存储位置不同。对于 Navigator,所有的 cookie 都存储在一个名为 cookie.txt 的文件里;对于 Internet
Explorer,每个 cookie 都有自己单独的文本文件,这些文件默认存储在 \Windows\cookies 文件夹。<p>
cookie 由一个或多个 NAME=VALUE 对组成,并包括几个特殊字段:expires、domain、path 和 secure。
<ul>
<li> expires 字段 此字段表示 cookie 的过期日期。如果不指定此字段,则 cookie 在当前浏览器会话结束时过期。为了使 cookie
的持续时间变长,应将 expires 字段设置为合法的时间值(可以使用 Date 对象)。如果指定了 expires 字段,则浏览器会话结束后,cookie
被写到文本文件中;否则浏览器会话结束后,cookie 自动销毁。</li>
<li> domain 字段 此字段表示 cookie 的有效域。例如,如果指定 domain=www.javascript.com,则 cookie
被该域的所有网页共享。</li>
<li> path 字段 此字段确定比 domain 更进一步的有效范围,取值为文件夹名。例如,如果同时指定 domain=www.javascript.com
和 path=/examples,则表示 cookie 在 www.javascript.com/examples 范围内有效。</li>
<li> secure 字段 如果指定此字段(不需要取值),则 cookie 只能在安全通信通道(HTTPS)上传递。</li>
</ul>
<p>
2. 读写 cookie<p>
在 JavaScript 中,cookie 是 document 对象的一个属性,可以通过使用该属性来使用 cookie。<p>
在设置 cookie 时,应为 cookie 设置一个或多个 NAME=VALUE 对,然后指定必要的属性,并将不同属性之间以分号隔开,最后将代表 cookie
的字符串赋给 document.cookie。例如,以下语句创建了一个名为 cookie1 的 cookie,并将过期日期设置为 1 天之后:<p>
var expireDate=new Date();<p>
expireDate.setTime(expireDate.gettime()+24*60*60*1000);<p>
document.cookie="cookie1=this is my cookie.;expires="+expireDate.toGMTString();<p>
在指定 cookie 的名称和值时,可以使用任意字符串,但字符串中不允许使用分号、逗号和空格。在指定 expires 属性时,最好使用 Date 对象,以确保日期值采用了正确的格式。在刚才设置
cookie1 的过程中,使用了 Date() 对象的 setTime()(将 Date 对象设置为毫秒值)、getTime()(获得日期对象的毫秒值)和
toGMTString()(将毫秒值转换为 GMT 时间字符串)方法,以确保获得所需格式的过期时间。<p>
设置了 cookie 之后,只有将其读取出来并进行必要的解析,才能使其发挥作用。由于我们通常只使用 cookie 的值,因此如何获取对应于指定 cookie
名称的 cookie 值就是至关重要的。<p>
以下函数用于读取 cookie 中对应于 name 的 value,读者可以将其简单修改之后应用于自己的程序之中:<p>
var myCookie=document.cookie; //myCookie 是代表 cookie 的字符串。<p>
function readCookie(myCookie,name)<p>
{<p>
var start=myCookie.indexOf(name+"="); //找到名称 name<p>
if(start == -1) <p>
alert("指定名称不存在!")<p>
else<p>
{<p>
start=myCookie.indexOf("=",start)+1; //指定值的起点<p>
var end=myCookie.indexOf(";",start); /* 指定值的终点(如果 cookie 的值不以分号结束,例如仅有一个
cookie 时,则此函数无法返回正确结果;请读者考虑这种情况,然后修改此函数,使其具有更广泛的适用性。)*/<p>
var value=unescape(myCookie.substring(start,end)); //获取值<p>
if(value==null)<p>
alert("没有值!")<p>
else<p>
return value;<p>
}<p>
}<p>
3. 示例 1
<p> 以下示例显示了 cookie 的基本用法。
<p><a href="../src/tu6.24.htm" target="_blank">示例</a>
<p>此示例可以用于测试 cookie 的各种特性(请读者自行尝试):
<ul>
<li> 在第一个文本框中输入一个 NAME=VALUE 对,然后单击"设置 cookie"按钮,则所输入的 NAME=VALUE
对被加入到 cookie 中;单击"读 cookie"按钮,可以在 cookie 文本框中看到 cookie 中的内容。关闭浏览器,然后重新启动浏览器并打开示例页面,单击"读
cookie"按钮,cookie 文本框中不显示任何内容,这是因为没有设置 expires 属性的 cookie 在本次浏览器会话任务结束后即销毁。</li>
</ul>
<p>
<ul>
<li> 在第一个文本框中输入一个 NAME=VALUE 对,然后单击"设置 cookie"按钮。多次重复以上步骤。单击"读
cookie"按钮,则在 cookie 文本框中显示出多次设置的 NAME=VALUE 对,可见写 cookie 的方式是附加式的。但如果使用了相同的
name,则后设置的 cookie 将覆盖先前的 cookie。</li>
<li> 在第一个文本框中设置 cookie 时,加入 expires 属性,例如输入字符串:myname=zhaofengnian;expires='Wednesday
00-Oct-9 12:00:00 GMT',注意确保 expires 的时间晚于当前时间,然后单击"设置 cookie"按钮。再在第一个文本框中输入一个没有
expires 属性的 cookie,例如输入字符串 email=zfn@263.net,然后单击"设置 cookie"按钮。单击"读
cookie"按钮,则在 cookie 文本框中仅显示 NAME=VALUE 对--"myname=zhaofengnian;
email=zfn@263.net",而不显示 expires 的值。关闭浏览器,然后重新启动浏览器并打开示例页面,则仅显示设置有 expires
属性的 cookie--"myname=zhaofengnian"。</li>
</ul>
<p>
4. 示例 2
<p> 以下示例显示了如何利用 cookie 的值传递信息。
<p><a href="../src/tu6.26.htm" target="_blank">示例</a>
<p>本示例的效果是:当用户第一次打开页面时,要求输入姓名,输入姓名并单击"确定"按钮后,将显示信息;关闭浏览器,然后再次启动浏览器并打开示例页面,则直接显示。
<p>
<p> 注意:使用此示例时,事先必须没有 cookie 与当前文件夹相关联,否则在欢迎页面中会将与当前文件夹关联的所有 cookie 信息都显示出来。如果要清除与当前文件夹相关联的
cookie,应打开 \windows\cookies 文件夹,找到文件名中包含示例所在文件夹的文件夹名的 cookie 文件,将其删除即可。
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?