织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>Web>

javascript操作cookie

罗索客 发布于 2004-03-08 16:56 点击:次 
使用 cookie,您可以将一些数据信息保存在客户端用户的机器中,而在以后用户浏览您的网页的时候再调出来使用。通常我们使用 cookie 保存一些数据、登陆帐号等。 创建一个 cookie 需要用到下边的信息: cookie 的名字=cookie 的值 - 这个字符串表示 cookie 的数据,请看
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)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200403/425.html]
本文出处: 作者:iwgh
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容