当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 初学javascript之cookie篇(译)

Javascript
JavaScript中出现乱码的处理心得
JQuery 写的个性导航菜单
Jquery 高亮显示文本中重要的关键字
使用jQuery获取radio/checkbox组的值的代码收集
jquery 弹出登录窗口实现代码
JQuery与iframe交互实现代码
Javascript 键盘keyCode键码值表
javascript 事件加载与预加载
javascript 处理事件绑定的一些兼容写法
javascript 鼠标事件总结
javascript 异步的innerHTML使用分析
javascript 键盘事件总结 推荐
javascript Array对象使用小结
再谈javascript 动态添加样式规则 W3C校检
用Javascript同时提交多个Web表单的方法
javascript 闪烁的圣诞树实现代码
键盘上下键移动选择table表格行的js代码
javascript 计算两个整数的百分比值
js tab效果的实现代码
默认让页面的第一个控件选中的javascript代码

Javascript 中的 初学javascript之cookie篇(译)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 96 ::
收藏到网摘: n/a

 

 [译者注:将本文的最后示例代码拷贝至文本文件中,更名文件为homepage.htm格式文件,在浏览器中运行,本文以该示例代码讲解


  简介

  ====================================

  问题是我想解决自动访问http://www.thehungersite.com。这个页面能够限制你每一天只访问它一次(不要忘记在这链接上点击)。
  现在为止,每次一开始我做的第一件事就是手工选择我的书签加载这个页面。

  为什么不为它创建一个简单的脚本程序呢?
  因为我想让它在Netscape和IE下都能够同样的工作,我开始学习Javascript。

  解决

  ====================================

  主题思想很简单:创建一个页面并测试一下今天这个页面是否已被加载过,
  如果没有加载,那就通过它链接到http://www.thehungersite.com,并且设置
  这个页面作为浏览器的主页。

  获取页面并重定向是很容易的,问题是如何记忆这个页面已被访问过。

  因为Javascript没有文件访问的功能,看来我们只能使用cookies了。

  Cookies是一个有大小限制的变量,它与一个服务器的域名相关联,
  默认情况下cookie的生存期是当浏览器关闭时被清空(注意:不是当你离开
  这个页面的时候),但可以用一个脚本程序改变这种情况,
  在用户关闭浏览器后使cookies能够存储下来,Netscape在文件中使用所有的
  Cookie,而IE分别存储每个cookie。此外,不同的浏览器会带来一些意想
  不到的情况,你必须确定一个用户在它的浏览器设置中是否关闭了cookies。

  一切都很好也很妙,只是现在我还未在IE中测试它,调用示例Javascript语句:
  cookieExpires = "01-APR-" + nLyear + " GMT";
  document.cookies = cookieName + "=" + cookieValue + ";  expires=" + cookieExpires;

  然后调用
  document.write(document.cookie);

  document.cookie是空的。

  在试验和研究了一下上面的示例程序后,会发现:

  1。你不能够读和显示cookie。如果你想看一下这个cookie你需要指定与它相同的另一个字符串变量,如下:
   document.cookie = cookieName + "=" + cookieValue + "; expires=" + cookieExpires;
   myvar = cookieName + "=" + cookieValue + "; expires=" + cookieExpires;
   document.write(myvar);

  2. 浏览器用了不同的日期格式:
    Netscape使用"GMT"结束,IE使用“UTC",这是因为它可以更好的构建一个日期,象下面这样:
      var expdate = new Date()
   cookieExpires.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)) //+1 day
   cookieExpires.toGMTString()

   当你显示日期部分
   document.write(expdate.getYear() + "<br>" + expdate.getMonth() + "<br>" + expdate.getDate());
   对于2000-11-15的日期,在IE中显示为2000/10/15,在Netscape下显示100/10/15(注:已确定是一些较低版本的
   Netscape 浏览器的Y2K问题)

   示例中看到像下面这样的部分:
   if (platform == "Mac") {
   lastVisit = lastVisit - (24 * 60 * 60 * 1000)
   }
   但我不可能检测它。

  日期对象有getDate和getDay的方法,第二个方法返回在一周中天的索引号。

----------------------------------------
  知道了这些,基本上就没问题了(现在你可以看一下homepage.htm)

[译者注:将本文的最后示例代码拷至文本文件中并保存htm格式,然后运行]

  最后要说明的是,这不仅是一个专用的JS脚本,如果你想将它用在你的web页面上你必须最小程度的使用不同的浏览器测试它并注意它们的版本,许多的脚本程序包含了浏览器类型检测和大量的if...else语句,以处理这样不同。

  示例页面homepage.htm源代码

  <html>
  <head>
  <title>Homepage</title>
  </head>
  <body>
  <a href='http://www.thehungersite.com/'>Manual redirection<br></a>
  <a href="javascript:ResetCookie()">Cookie reset</a>

  <script language="JavaScript">
  <!--
  var