JavaScript字符串属性indexOf()的妙用
四.与Cookies结合设置个性化访问选项
关于Cookies一直是最有争议的东东——它会不会是网上间谍,将咱硬盘上的好东东尽数端走,或是一双墙外的眼睛,在网的那边监视我辈的一举一动?哈哈!不用慌!Cookies仅仅是一组你在访问某特定站点存时它在你硬盘上储存的一些数据,它记录你在这个站点上的一些访问的信息,且只能被创建这个Cookies的站点读回。通常说来,Cookies是比较安全的,所以在网上它一般还是比较活跃的……正如许多事物一样,Cookies既有惹人讨厌的一面,但也有它便利一面——我们可以利用它来纪录访客的偏好,达到用户定制"个性化"页面的目的……
第一步. 在页面的某一位置插入以下脚本(最好是在页面的前部,如<head>……</head>之间):
<script
language="JavaScript"><!--
function GetCookie(Name){
//检索cookies的通用函数
var search=Name+'=';
if(document.cookie.length>0){
//如果存在本文档的cookies
offset=document.cookie.indexOf(search);
if(offset!=-1){
//如果以Name为名的cookie存在
offset+=search.length;
//设置索引开始位置
end=document.cookie.indexOf(';',offset); //设置索引结束位置
if(end==-1)
end=document.cookie.length; //如果本cookie是此cookies文档的最后一项
return
unescape(document.cookie.substring(offset,end)); //返回检索到的cookie值
}
else
return null; //以Name为名的Cookies不存在就返回"null"
}
else return null;
//本文档的Cookies不存在就返回"null"
}
function SetCookie(name,value){
//设置cookies的通用函数
var argv=SetCookie.arguments;
var
argc=SetCookie.arguments.length;
var expires=(argc>2)?argv[2]:null;
//如果参数大于三个,那么将第三个参数的值赋给" expires",否则使用默认的"null"。下同。
var
path=(argc>3)?argv[3]:null;
var domain=(argc>4)?argv[4]:null;
var
secure=(argc>5)?argv[5]:false;
//利用所获取的参数设置cookies,并将cookies的值(value)用escape函数编码
document.cookie=name+"="+escape(value)+((expires==null)?"":(";expires="+
expires.toGMTString()))+((path==null)?"":(";path="+path))+((domain==null)?
"":(";domain="+domain))+((secure==true)?";secure":"");
}
-->
</script>
第二步.在你想让读者自己设置访问选项的页面中加入以下代码:
1.在<head>……</head>之间加入以下代码:
<script
language="JavaScript"><!--
function iffirst(){
var
expDays=365;
var exp=new Date();
exp.setTime(exp.getTime() +
(expDays*24*60*60*1000));
var
iffirst=GetCookie('setup');
if(iffirst==null){
//假设你的个性化设置页面是http://ctsight.topcool.net/documents/setup.html,在这个页面中你可以以表单按钮或超链接的形式调用SetCookie函数,让你的访客定制访问参数;当他们第二次访问你的站点时,可以用GetCookie函数把SetCookie纪录的参数读出来,然后根据这些参数设置不同的访问选项,达到"个性化"的目的。限于篇幅,本文就不对这个setup.html页面进行讨论,有兴趣的可以来信共同探讨。
if(confirm('您好像是第一次访问本站,要设置一下访问参数吗?'))
top.location='http://ctsight.topcool.net/documents/setup.html';
else
if(confirm('您已取消设置,您希望以后访问本站时不再显示该提示吗?'))
SetCookie('setup','no',exp);
}
}
-->
</script>
2.修改此页的<body>标签:
<body
onload="iffirst()">