js操作Cookie,实现历史浏览记录

/**
 * history_teacher.jsp中的js,最近浏览名师
 * @version: 1.0
 * @author: mingming
 */
$(function(){
	getHistory();
});

var historyCount=4; //保存历史记录个数

/**
 * 增加浏览历史记录
 * @param id 编号
 * @param name 姓名
 * @param photo 照片
 * @param grade 年级
 * @param subject 科目
 * @return
 */
function setHistory(id,name,photo,grade,subject){
	stringCookie=getCookie(‘history‘);
    var stringHistory=""!=stringCookie?stringCookie:"{history:[]}";
    var json=new JSONHistory(stringHistory);  //转成json
    var list = json[‘history‘];  //获得json
    for (var i = 0; i < list.length; i++) {
    	try {
    		if(list[i].id == id){
        		list.splice(i,1); //删除重复数据,开始位置,删除个数
        		i=i-1; //下标归位
        	}
		} catch (e) {
			break;
		}
	}

    if(list.length>=historyCount){
    	//删除最开始的多余记录
    	var count = list.length - historyCount + 1; //需要删除的个数
    	list.splice(0,count); //开始位置,删除个数
    }

    var e="{id:‘"+id+"‘,name:‘"+name+"‘,photo:‘"+photo+"‘,grade:‘"+grade+"‘,subject:‘"+subject+"‘}";
    json[‘history‘].push(e);//添加一个新的记录
    setCookie(‘history‘,json.toString(),365); //365天
}

/**
 * 获得浏览历史记录
 * @return
 */
function getHistory(){
	var historyJSON=getCookie(‘history‘);
	if(historyJSON==""){
	}else{
		var data = eval("("+historyJSON+")");
		var history = data[‘history‘]; //历史记录
		var length = history.length;
		if(length > historyCount){
			length = historyCount;
		}
		//从最后一个浏览记录开始获取
		var historyHtml="";
		for ( var i = length-1; i >= 0; i--) {
			historyHtml+=
			‘<dd>‘+
	          ‘<ul>‘+
	            ‘<li class="recimg"><a href="‘+PATH+"/teacher/teacherinfo?teacherVO.teacherId="+history[i].id+‘"><img src="‘+PATH + "/"+ history[i].photo +‘"  /></a></li>‘+
	            ‘<li class="recinfo">‘+
	              ‘<p><a href="‘+PATH+"/teacher/teacherinfo?teacherVO.teacherId="+history[i].id+‘">‘+history[i].name+‘</a></p>‘+
	              ‘<p class="grayp">科目:‘+history[i].subject+‘</p>‘+
	              ‘<p class="grayp">年级:‘+history[i].grade+‘</p>‘+
	            ‘</li>‘+
	          ‘</ul>‘+
	        ‘</dd>‘;
		}

		if(historyHtml!=""){
			$("#historyTeacher").html(‘<h2>最近浏览名师</h2><dl>‘+historyHtml+‘</dl>‘);
		}
	}
}

/**
 * 添加cookie
 * @param cookName cookie名称
 * @param cookName cookie值
 * @param expiredays 时长
 */
function setCookie(cookName,cookValue,expiredays){
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays*24*3600*1000);
    var cookieVal=cookName+ "=" +escape(cookValue)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/";
    document.cookie=cookieVal;
}

/**
 * 获取cookie
 * @param cookName cookie名称
 * @return
 */
function getCookie(cookName)
{
    if(document.cookie.length>0){
    	var c_start = document.cookie.indexOf(cookName + "=");
    	if(c_start!=-1){ //存在
    		c_start = c_start + cookName.length + 1; //"history="后的开始位置
    		var c_end=document.cookie.indexOf(";",c_start); //找到JSESSIONID在的位置
    		if (c_end==-1){ //JSESSIONID不存在
    			c_end=document.cookie.length;
    		}
    		return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return "";
}

/**
 * JSON
 */
var JSONHistory = function(sJSON){
	this.objType = (typeof sJSON);
	if(this.objType==‘string‘ && ‘‘==sJSON){
	      sJSON = ‘{history:[]}‘ ;
	}
    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);
};
JSONHistory.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;
    }
};

中间对于把历史记录转换为json格式有更简便的方法。这个是个单独案例。

页面引入js,增加浏览历史记录调用

setHistory(id,name,photo,grade,subject)

cookie参数设置:

path:

是相对于应用服务器存放应用的文件夹的根目录而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夹下的所有应用共享cookie

测试结果:不设置,则当前目录下所有页面可以访问,设置”/“后,所有页面都可以访问

domain:

www.baidu.com中设置的cookie,但需要在zhidao.baidu.com下获取,这样就需要Cookie的setDomain()方法了。
  cookie.setPath("/");
  cookie.setDomain("baidu.com");//只给出域名的相同部分

cookie参数设置参考文档:

setPath和setCookie具体用法

js操作Cookie,实现历史浏览记录,布布扣,bubuko.com

时间: 2024-12-25 20:32:48

js操作Cookie,实现历史浏览记录的相关文章

destoon系统开发-最新利用浏览器的cookie 做历史浏览记录

  注意: 代码 放在要显示的为 (一般放在详情页),注意本教程不入库,直接利用浏览器的 cookie 缓存判断    <!--历史浏览记录 S--> <div class="column_box mt_10"> <div class="column_title">历史浏览记录</div> <div class="box_body_new"> <?php $MOD_name = &

js操作cookie

    前言 最近的一个项目需要做用户最近浏览的效果,需要使用cookie存储的方式来实现,找了一下相关的资料,于是便有了本篇博文,写js操作cookie的文章挺多的,不过我觉得自己还有必要记录一的,毕竟自己的东西印象更加的深刻,也方便以后的查找使用,再次感谢一下网络资料的无私奉献者们——祝你们身体健康,愿上帝与你们同在. 1:处理cookie的js文件,代码简单注释尚可,建议先看一下W3C有关cookie资料(链接往下拉!) /*useCookie.js:处理cookie的文件*/ /** *

Django之使用redis缓存session,历史浏览记录,首页数据实现性能优化

Redis缓存session 配置Django缓存数据到redis中 # diango的缓存配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", # 用户的session信息,历史浏览记录存储在redis数据库9中 "LOCATION": "redis://127.0.0.1:6379/9", "OPTIONS

js 操作 cookie

$(function(){ /** * version 1.0 * 功能:此文件旨在通过js操作cookie,包括cookie的读和写 * 作者:郭军周 * Email:[email protected] * 使用举例: * window.__cookie.setCookie(string key,string value,int time); * window.__cookie.getCookie(string key); * 几点说明: * 1:cookie 以字符串的形式保存在 docum

js操作cookie方法

cookie cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109和2965都已废弃,最新取代的规范是RFC6265. cookie的作用 服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态.Cookies最典型的应用是判定注册用户是否已 经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Co

分步引导中,Js操作Cookie,实现判断用户是否第一次登陆网站

上一篇介绍了分布引导插件IntroJs的使用,本篇介绍通过Js操作cookie的方法. 分步引导的功能只适合与第一次登陆网站的新用户,不能每次登陆都提示分布引导,那么如何判断用户是否第一次登录网站呢? 通过Js操作浏览器Cookie,方法有很多种,大多数是通过js获取到cookie存储的键值对,然后找到需要的哪一个键,在判断值,但是这种方案比较繁琐,现在给出一种新的想法.手动设置一个字段到cookie中,这样每次只判断是否有这个字段即可.代码如下: 1 <script type="text

jquery.cookie.js 操作cookie实现记住密码功能的实现代码

jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下. 复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready(function() { if ($.cookie("rmbUser") == "true") { $("#rmbUser").attr("checked", true); $("#user").val($.coo

js操作cookie,实现登录密码保存

通常cookie和session,是web开发中用于存储信息的对象,session存在于服务器的内存中,而cookie则是存在客户端,所以js可以直接操作cookie进行信息的存储和读取. js存放cookie一般的写法,如:document.cookie="userName=admin";,如果是多个键值对:document.cookie="userName=admin; userPass=123"; 下面是js操作cookie保存用户的登录信息: <!DO

redis存储用户历史浏览记录

1:什么时候需要添加浏览记录 访问商品详情页的时候 2:什么时候取出浏览记录 访问用户个人中心的时候 用户查看商品的历史浏览记录存成什么格式: history_用户id:[商品id,商品id] 添加用户浏览记录: # 添加用户的历史记录history_用户id:[商品id,商品id,商品id]conn = get_redis_connection('default')history_key = 'history_%d' % user.id# 用redis的lrem方法将最早的那一条浏览记录移除掉