TAG:
使用 cookie,您可以将一些数据信息保存在客户端用户的机器中,而在以后用户浏览您的网页的时候再调出来使用。通常我们使用 cookie 保存一些数据、登陆帐号等。 创建一个 cookie 需要用到下边的信息: cookie 的名字=cookie 的值 - 这个字符串表示 cookie 的数据,请看下边; 结束时间 - 您的 cookie 在客户端保留的时间,即是截止时间,如果当天的时间大于这个日期时间,那么客户端用户的机器将会删除这个 cookie; 域 (Domain) 和路径 (Path) - 这些是用于安全方面的,默认的情况下,域的值是服务器主机的域名,路径是当前这个设置 cookie 的页面在主机中相对于域名的路径 (这样就只有在相同路径下的那些页面可以使用此 cookie 了); 安全性 - 如果这个安全性标志被设置成 true 的话,那么 cookie 将会在一个安全的方式 (SSL 连接) 下发送到客户端。 通常,您只需要设置前两项 "cookie 的名字=cookie 的值" 和 "结束时间" 即可。在设置结束时间的时候,您可以使用 Date 对象,但要注意格式,单位是毫秒。下边就是一个例子,在这个例子中,"结束时间" 被设置成从当前时间算起过任意多天 (此例设置的 "结束时间" 是 7 天后): var days = 7; var expdate = new Date(); expdate.setTime (expdate.getTime() + (86400 * 1000 * days)); 我们通过 documents.cookie 属性来对 cookie 的数据进行存取。cookie 的格式是 "cookie的名字=cookie的值; expires=cookie的结束时间; path=路径",而所有的 cookie 都是保存在 documents.cookie 属性中的,它们之间使用分号 ";" 分开,所以虽然您可以单独地设置各个 cookie,但却要通过切分操作才能得到各个 cookie 的值,请参照下边的示例。 【经常用到的 cookie 函数】 为了让您有个好的开始,下边的三个函数分别提供了设置、删除、获取 cookie 的功能: function setCookie (name, value, expires) { documents.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() + "; path=/"; } function getCookie(name) { var search; search = name + "=" offset = documents.cookie.indexOf(search) if (offset != -1) { offset += search.length ; end = documents.cookie.indexOf(";", offset) ; if (end == -1) end = documents.cookie.length; return unescape(documents.cookie.substring(offset, end)); } else return ""; } function deleteCookie(name) { var expdate = new Date(); expdate.setTime(expdate.getTime() - (86400 * 1000 * 1)); setCookie(name, "", expdate); } escape() 和 unescape() 是 javascript 的内建函数,它们用来将一些特殊字符转换成十六进制代码。通常情况下,cookie 中的名字、值都不能包含任何空格、逗号或分号。使用这两个函数可以将这一类的字符转换成合法的可供 cookie 使用的十六进制字符。 删除所有您不再使用的 cookie 是一个很好的习惯,因为客户端会限制您可以存储的 cookie 个数 (对于 Netscape 浏览器来说:每一个主机/域最多是 20 个 cookie,总共可以存储 300 个)。上边的删除 cookie 的函数将 cookie 的结束时间设置成前一天的时间,这样就可以达到删除的目的了。 看看这个 在线示例 就知道上边函数的用法了。 function storeData() { // Set the expiration date. var days = 7; var expdate = new Date(); expdate.setTime (expdate.getTime() + (86400 * 1000 * days)); // Save form data as cookies. setCookie("name", document.forms[0].name.value, expdate); setCookie("address", document.forms[0].address.value, expdate); setCookie("city", document.forms[0].city.value, expdate); setCookie("state", document.forms[0].state.value, expdate); setCookie("zip", document.forms[0].zip.value, expdate); return false; } // Retrieve form data from cookies. function retrieveData() { var s; if ((s = getCookie("name")) != "") document.forms[0].name.value = s; if ((s = getCookie("address")) != "") document.forms[0].address.value = s; if ((s = getCookie("city")) != "") document.forms[0].city.value = s; if ((s = getCookie("state")) != "") document.forms[0].state.value = s; if ((s = getCookie("zip")) != "") document.forms[0].zip.value = s; } /****************************************************************************** * Cookie functions. * ******************************************************************************/ function setCookie (name, value, expires) { documents.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() + "; path=/"; } function getCookie(name) { var search; search = name + "=" offset = documents.cookie.indexOf(search) if (offset != -1) { offset += search.length ; end = documents.cookie.indexOf(";", offset) ; if (end == -1) end = documents.cookie.length; return unescape(documents.cookie.substring(offset, end)); } else return ""; } function deleteCookie(name) { var expdate = new Date(); expdate.setTime(expdate.getTime() - (86400 * 1000 * 1)); setCookie(name, "", expdate); } /****************************************************************************** * End of cookie functions. * ******************************************************************************/ 注意:以下的部分使用 javascript 1.2 ,而且只运用于 Netscape 和 IE version 4.0 或者更高版本。 (iwgh) |