本文实例讲述了js操作cookie保存浏览记录的方法。分享给大家供大家参考,具体如下:
说明:最近做了一个功能,记录用户浏览过的产品页面。我的思路是,客户每次进入产品页面,就自己调用JS把产品信息以json的形式保存到cookie里面。
浏览记录的显示是从cookie里读出来,然后解析成json,生成html元素。因为用户可能会同时打开好几个页面,这几个页面上可能都有浏览记录,为了使即使显示浏览记录,每秒中刷新一次。
要用到2个js文件,history.js,关键的聊天记录保存和读取代码。json.js,对json进行处理。
history.js
var addHistory=function(num,id){
stringCookie=getCookie(\'history\');
var stringHistory=\"\"!=stringCookie?stringCookie:\"{history:[]}\";
var json=new JSON(stringHistory);
var e=\"{num:\"+num+\",id:\"+id+\"}\";
json[\'history\'].push(e);//添加一个新的记录
setCookie(\'history\',json.toString(),30);
}
//显示历史记录
var DisplayHistory=function(){
var p_ele=document.getElementById(\'history\');
while (p_ele.firstChild) {
p_ele.removeChild(p_ele.firstChild);
}
var historyJSON=getCookie(\'history\');
var json=new JSON(historyJSON);
var displayNum=6;
for(i=json[\'history\'].length-1;i>0;i--){
addLi(json[\'history\'][i][\'num\'],json[\'history\'][i][\'id\'],\"history\");
displayNum--;
if(displayNum==0){break;}
}
}
//添加一个li元素
var addLi=function(num,id,pid){
var a=document.createElement(\'a\');
var href=\'product.action?pid=\'+id;
a.setAttribute(\'href\',href);
var t=document.createTextNode(num);
a.appendChild(t);
var li=document.createElement(\'li\');
li.appendChild(a);
document.getElementById(pid).appendChild(li);
}
//添加cookie
var setCookie=function(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
cookieVal=c_name+ \"=\" +escape(value)+((expiredays==null) ? \"\" : \";expires=\"+exdate.toGMTString());
// alert(cookieVal);
document.cookie=cookieVal;
}
//获取cookie
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + \"=\")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(\";\",c_start)
if (c_end==-1) c_end=document.cookie.length
// document.write(document.cookie.substring(c_start,c_end)+\"<br>\");
return unescape(document.cookie.substring(c_start,c_end))
}
}
return \"\"
}
json.js
var JSON = function(sJSON){
this.objType = (typeof sJSON);
this.self = [];
(function(s,o){for(var i in o){o.hasOwnProperty(i)&&(s[i]=o[i],s.self[i]=o[i])};})(this,(this.objType==\'string\')?eval(\'0,\'+sJSON):sJSON);
}
JSON.prototype = {
toString:function(){
return this.getString();
},
valueOf:function(){
return this.getString();
},
getString:function(){
var sA = [];
(function(o){
var oo = null;
sA.push(\'{\');
for(var i in o){
if(o.hasOwnProperty(i) && i!=\'prototype\'){
oo = o[i];
if(oo instanceof Array){
sA.push(i+\':[\');
for(var b in oo){
if(oo.hasOwnProperty(b) && b!=\'prototype\'){
sA.push(oo[b]+\',\');
if(typeof oo[b]==\'object\') arguments.callee(oo[b]);
}
}
sA.push(\'],\');
continue;
}else{
sA.push(i+\':\'+oo+\',\');
}
if(typeof oo==\'object\') arguments.callee(oo);
}
}
sA.push(\'},\');
})(this.self);
return sA.slice(0).join(\'\').replace(/
objectobject
,/ig,\'\').replace(/,\\}/g,\'}\').replace(/,\\]/g,\']\').slice(0,-1);
},
push:function(sName,sValue){
this.self[sName] = sValue;
this[sName] = sValue;
}
}
希望本文所述对大家JavaScript程序设计有所帮助。
本文地址:https://www.stayed.cn/item/22297
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我