博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript 通过cookie记录浏览记录
阅读量:5297 次
发布时间:2019-06-14

本文共 3648 字,大约阅读时间需要 12 分钟。

说明:最近做了一个功能,记录用户浏览过的产品页面。我的思路是,客户每次进入产品页面,就自己调用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( / \[object object\], / ig, '' ).replace( / ,\} / g, ' } ' ).replace( / ,\] / g, ' ] ' ).slice( 0 , - 1 );
},
push: function (sName,sValue){
this .self[sName] = sValue;
this [sName] = sValue;
}
}

 

 

 

 

示例程序
< script type ="text/javascript" src ="../js/json.js" ></ script >
< script type ="text/javascript" src ="../js/history.js" ></ script >
< ul id ="history" >
</ ul >
< script >
addHistory( 15810782304 , 2 );
addHistory( 64654665 , 2 );
addHistory( 6843212 , 2 );
addHistory( 84984432521 , 2 );
setInterval( " DisplayHistory() " , 1000 );
</ script >

转载于:https://www.cnblogs.com/rmbteam/archive/2011/10/29/2228736.html

你可能感兴趣的文章
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Spring EL hello world实例
查看>>
百度地图API地理位置和坐标转换
查看>>
MyBatis学习总结(六)——调用存储过程
查看>>
code-代码平台服务器路径
查看>>
离线安装 Visual Studio Express 而不下载整个镜像文件的方法(转载)
查看>>
2017-2018-2偏微分方程复习题解析10
查看>>
Java抽象类和接口的比较
查看>>
web技术工具帖
查看>>
一次性搞明白 service和factory区别
查看>>
iOS UI控件5-UIPickerView
查看>>
深入Java虚拟机读书笔记第三章安全
查看>>
素数筛选法
查看>>
php连接postgresql数据库
查看>>
Visual studio之C# 调用系统软键盘(外部"osk.exe")
查看>>
移动应用开发选型:向左还是向右?
查看>>
开发进度一
查看>>
十天冲刺(6)
查看>>
MyBaits学习
查看>>
MySQL安装的详细步骤
查看>>