同一个页面菜单展示时没有展示

同一个页面菜单显示时没有展示

我们在做页面的时候,如果采用include的时候,点击某一个菜单会调用另一个页面,导致点击的菜单没有显示,所以客户需要的要求是点击完此处时显示的时候还必须显示。

实现此种要求的方式是:

1.把点击的菜单id记入进cookie中

2.在页面加载成功后,读取cookie,完了调用菜单显示的方法

代码如下:

写入和读取cookie

**
 * 保存cookie
 * @param {Object} name cookie名称
 * @param {Object} value 值
 * @param {Object} hours 保存时间,单位为小时
 */
function writeCookie(name, value, hours) {
	var expire = "";
	if (hours != null) {
		expire = new Date((new Date()).getTime() + hours * 3600000);
		expire = "; expires=" + expire.toGMTString();
	}
	document.cookie = name + "=" + escape(value) + expire;
}
/**
 * 读取cookie
 * @param {Object} name cookie名称
 * @return {TypeName} 
 */
function readCookie(name) {
	var cookieValue = "";
	var search = name + "=";
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1)
				end = document.cookie.length;
			cookieValue = unescape(document.cookie.substring(offset, end))
		}
	}
	return cookieValue;
}

菜单显示方法

/**
	 * 菜单展示方法
	 * @param {Object} emid
	 */
	function DoMenu(emid)
	{
	 //写cookie
	 writeCookie("hovers", emid, 24);

	 var obj = document.getElementById(emid); 
	 obj.className = (obj.className.toLowerCase() == "expanded"?"collapsed":"expanded");
	 
	 if((LastLeftID!="")&&(emid!=LastLeftID)) //关闭上一个Menu
	 {
	  	document.getElementById(LastLeftID).className = "collapsed";
	 }
	 LastLeftID = emid;
	}

页面加载成功后显示菜单

$(document).ready(function() {
	//读取cookie的hovers属性
	var temp_c = readCookie("hovers") ;
	alert(temp_c);
	if(temp_c && temp_c!="none"){
		//让此菜单展开
		DoMenu(temp_c);
	}
});

window7cookie保存文件夹C:\Users\用户名\AppData\Local\Microsoft\Windows\Temporary Internet Files

 

 windowXP cookie保存文件夹C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files

 

 

采用jquery cookie插件解决此问题方案

 

**
 * 保存cookie
 * @param {Object} name cookie名称
 * @param {Object} value 值
 * @param {Object} hours 保存时间,单位为秒
 */
function writeCookie(name, value, hours) {
	$.cookie(name, value,{expires: 1,path:"/"});
}

/**
 * 读取cookie
 * @param {Object} name cookie名称
 * @return {TypeName} 
 */
function readCookie(name) {
	var cookieValue = $.cookie(name); 
	return cookieValue;
}

 

页面加载成功后显示菜单

$(document).ready(function() {
		//读取cookie的hovers属性
		var temp_c = readCookie("hovers") ;
		//alert("read="+temp_c);
		if(temp_c && temp_c!="none"){
			//让此菜单展开
			DoMenu(temp_c,true);
		}
		//$.removeCookie("hovers",{ path: '/' });
});

 

删除cookie

$.removeCookie("hovers",{ path: "/" });

 最注意的是path这个参数的使用

理解了path意义就可以解决了!