`
happmaoo
  • 浏览: 4474522 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

初学Javascript之cookie篇(译)

阅读更多

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处http://xinyistudio.vicp.net/和作者信息及本声明

[译者注:将本文的最后示例代码拷贝至文本文件中,更名文件为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 bVisitedToday = false;

var lastVisit = GetCookie("lastVisit");
if (lastVisit != null)
{
lastVisit = 1 * lastVisit;
var lastHere = new Date(lastVisit);
var rightNow = new Date();

if(lastHere.getYear() == rightNow.getYear()
&& lastHere.getMonth() == rightNow.getMonth()
&& lastHere.getDate() == rightNow.getDate())
{
bVisitedToday = true;
}
}

if(bVisitedToday == false)
{
setLastlastVisitCookie();
window.location="http://www.thehungersite.com/"
}
else
{
//window.location="about:blank"
}

function getCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value)
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function setLastlastVisitCookie ()
{
var rightNow = new Date();
var expdate = new Date();
expdate.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)); //+1 day
SetCookie ("lastVisit", rightNow.getTime(), expdate, "/");
}
function ResetCookie()
{
SetCookie("lastVisit", 0, null, "/");
}
// -->
</script>
</body>
</html>

分享到:
评论

相关推荐

    JavaScript入门之事件、cookie、定时等

    JavaScript作为网页开发中最广泛使用的脚本语言之一,其事件处理机制、cookie的应用、定时任务的执行是前端开发的重要知识点,对于初学者来说,理解这些概念对于学习JavaScript至关重要。 ### 事件 (Event) 在Web...

    jsp源码实例.rar_cookie_javascript cookie_jsp 实例_jsp 搜索_jsp 表单

    学习这些实例可以帮助初学者理解JSP的基本工作原理,以及如何利用JavaScript(标签中的"javascript_cookie"可能指的是JSP与JavaScript交互的部分)和cookie进行动态网页开发。同时,对于开发者来说,通过实践这些...

    jquery-cookie(Jq取cookie必备).rar

    《jQuery Cookie:轻松实现JavaScript中的Cookie操作》 在Web开发中,Cookie是一种常见的数据存储机制,用于在客户端保存用户信息、设置或跟踪用户行为。jQuery库的扩展插件jQuery Cookie则为开发者提供了一种简单...

    JAVA100例之实例81Cookie计数器

    - 可以使用HttpOnly标志防止JavaScript访问Cookie,减少跨站脚本攻击(XSS)的风险。 通过这个"JAVA100例之实例81Cookie计数器",开发者可以了解Cookie的基本操作,并将其应用于实际项目中。这个实例简单直观,...

    Javascript实例300道

    8. **Cookie脚本篇**:Cookie是浏览器端存储数据的一种方式,JavaScript可以用来设置、读取和删除Cookie,常用于用户偏好设置、会话管理等场景。 9. **警报对话框篇**:JavaScript的alert、prompt和confirm函数能弹...

    JavaScript权威指南(JavaScript犀牛书一本)

    《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...

    Cookie记住用户名密码

    这个功能主要依赖于JavaScript和Cookie技术来实现,无需复杂的后端代码支持。下面我们将深入探讨这个功能的实现原理和步骤。 首先,Cookie是Web服务器在用户浏览器上存储的小型文本文件,用于在用户与服务器之间...

    JS初级练习之cookie

    总的来说,这个练习旨在帮助初学者掌握JavaScript中关于cookie的基础知识,并能实际应用到网页开发中。通过实践,学习者可以更好地理解cookie的工作原理,以及如何利用它来存储和管理用户状态。

    JavaScript基础教程(第8版) 高清版 mobi

    书中从javascript 语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式、用户事件和cookie,并在上一版的基础上新增了两章,讲述jquery 框架的基础知识。本书不仅介绍了基础知识和使用方法,也深入...

    JavaScript网页设计300例.rar

    "JavaScript网页设计300例.rar" 是一个针对初学者的资源包,包含了丰富的实例,帮助学习者通过实践掌握JavaScript的核心概念和技术。这个压缩包分为21个子内容,涵盖了多个JavaScript应用领域,如密码管理、鼠标特效...

    Cookie实验成果

    在IT领域,Cookie是一种至关重要的技术,特别是在Web开发中。Cookie是服务器发送到用户浏览器并存储在本地的一小块数据...这样的资源对于初学者来说是非常有价值的实践案例,能够帮助他们更好地理解和掌握Cookie技术。

    javascript从入门到精通PPT

    《JavaScript从入门到精通》附带的ppt 《JavaScript从入门到精通》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用JavaScript语言进行程序开发应该掌握的各方面技术。全书共分24章,包括初识...

    21天学通JavaScript 源代码1(还有10章在源代码2文件)

    第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术...

    21天学通JavaScript 源代码2(有一部分在源码1文件中)

    第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术...

    javascript(PPT)(讲的很全面)

    这套“javascript(PPT)”涵盖了从基础到高级的JavaScript知识,共计24章,非常适合初学者和进阶者学习。 1. **基础篇**:这部分可能包括变量、数据类型、运算符、流程控制语句(如if、switch、for、while)、函数等...

    JavaScript入门经典(第4版) Beginning JavaScript

    《JavaScript入门经典(第4版)》是一本针对初学者的全面指南,旨在帮助读者掌握JavaScript编程的基础知识,并能够运用这些知识来开发高质量的Web应用程序。本书由Paul Wilton和Jeremy McPeak共同编写,涵盖了...

    Javascript基础教程 文字版 代码可复制

    - **Cookie**:Cookie用于存储用户信息,JavaScript可以通过读写Cookie来实现持久化的用户体验。 综上所述,《JavaScript基础教程》旨在为初学者提供全面的JavaScript基础知识介绍,包括语言特性、开发工具选择、...

    初学JavaScript第二章

    在初学JavaScript的过程中,了解和掌握以下几个核心概念和知识点至关重要: 1. **JavaScript对象的特性**:JavaScript的对象是基于原型的,这意味着它们都是实例化的,但不能直接创建继承自这些对象的新子类。对象...

    Beginning JavaScript, 4th Edition

    ### Beginning JavaScript, 4th Edition #### 知识点概览 本书《Beginning JavaScript, 4th Edition》是...无论是初学者还是有一定基础的开发者,《Beginning JavaScript, 4th Edition》都是一本非常有价值的参考书。

Global site tag (gtag.js) - Google Analytics