描述:用Cookie实现关闭系统、关闭浏览器、退出登录、登录状态过期、重新登录系统时,打开所有未关闭的菜单选项卡。


1:LigerUI扩展js插件(liger.menu.cookie.js)

/*==============================
作者:Lzw
创建:2017年6月30日16:32:53
说明:LigerUI扩展 - 将打开选项卡存入Cookie中
格式:json:[{"tabid":"1001","tabname":"选项卡1","src":"1.html"},{"tabid":"1003","tabname":"选项卡3","src":"3.html"}]
==============================*/
var liger_menu_cookie = '[]';
var liger_menu_arry_item = eval('(' + liger_menu_cookie + ')');
var liger_menu_cookiename = "LIGERUI_MENU_OPEN_COOKIE";

var LigerMenuCookie = {
GetDate: function() {
///#begin 获取Cookie中保存的菜单,并返回Array数组#
if (Cookie.get(liger_menu_cookiename) != null) {
return eval('(' + Cookie.get(liger_menu_cookiename) + ')');
} else {
return null;
}
///#end 获取Cookie中保存的菜单,并返回Array数组#
},
Select: function() {
///#begin 获取Cookie中保存的菜单#
if (Cookie.get(liger_menu_cookiename) != null) {
liger_menu_cookie = Cookie.get(liger_menu_cookiename);
liger_menu_arry_item = eval('(' + liger_menu_cookie + ')');
}
///#end 获取Cookie中保存的菜单#
},

IsExist: function(tabid, tabname) {
///#begin 判断菜单是否已存在于Cookie中#
var arry_grep = $.grep(liger_menu_arry_item, function(item) {
return item.tabid == tabid || item.tabname == tabname;
});
if (arry_grep.length > 0) {
return true;
} else {
return false;
}
///#end 判断菜单是否已存在于Cookie中#
},

Create: function(tabid, tabname, src) {
///#begin 创建菜单,存到Cookie#
this.Select();
if (!this.IsExist(tabid, tabname)) {
var item = { 'tabid': tabid, 'tabname': tabname, 'src': src };
liger_menu_arry_item.push(item);
this.Save();
}
///#end 创建菜单,存到Cookie#
},

Remove: function(tabid, tabname) {
///#begin 移除菜单,从Cookie移除#
this.Select();
if (this.IsExist(tabid, tabname)) {
for (var i = 0; i < liger_menu_arry_item.length; i++) {
if (liger_menu_arry_item[i].tabid == tabid || liger_menu_arry_item[i].tabname == tabname) {
liger_menu_arry_item.splice(i, 1);
}
}
this.Save();
}
///#end 移除菜单,从Cookie移除#
},

Clear: function() {
///#begin 清空菜单,清空Cookie#
this.Select();
if (liger_menu_arry_item.length > 0) {
liger_menu_arry_item.splice(0, liger_menu_arry_item.length);
this.Save();
}
///#end 清空菜单,清空Cookie#
},

Save: function() {
///#begin 保存菜单,保存Cookie#
//expire.setTime(expires.getTime() + 3 * 30 * 24 * 60 * 60 * 1000);
//expire=(当前时间)+(3个月 * 一个月当作 30 天 * 一天 24 小时 * 一小时 60 分 * 一分 60 秒 * 一秒 1000 毫秒)
var month = 1;//保存一个月
var expire = new Date();
expire.setTime(expire.getTime() + month * 30 * 24 * 60 * 60 * 1000);
Cookie.set(liger_menu_cookiename, JSON.stringify(liger_menu_arry_item), expire.toGMTString());
///#end 保存菜单,保存Cookie#
}
}


2:Cookie扩展js(jquery.cookie.js)

/*cookie管理*/
var Cookie = {
getExpiresDate: function(days, hours, minutes) {
var ExpiresDate = new Date();
if (typeof days == "number" && typeof hours == "number" &&
typeof hours == "number") {
ExpiresDate.setDate(ExpiresDate.getDate() + parseInt(days));
ExpiresDate.setHours(ExpiresDate.getHours() + parseInt(hours));
ExpiresDate.setMinutes(ExpiresDate.getMinutes() + parseInt(minutes));
return ExpiresDate.toGMTString();
}
},
_getValue: function(offset) {
var endstr = document.cookie.indexOf(";", offset);
if (endstr == -1) {
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
},
get: function(name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg) {
return this._getValue(j);
}
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
},
set: function(name, value, expires, path, domain, secure) {
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
},
remove: function(name, path, domain) {
if (this.get(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
},
clear: function() {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++)
var cookieName = cookies[i].split('=')[0];
if (cookieName == 'ProductListIds') {
this.remove(cookieName);
}
}
};




3:打开ligerui.all.js接入扩展插件

全文搜索:addTabItem: function (options)

追加内容: LigerMenuCookie.Create(tabid, text, url);

示例图:

LigerUI扩展,进入后台时打开上次未关闭的菜单_i++


4:全文搜索:removeTabItem: function (tabid)

追加内容: var tabname=$("li[tabid=" + tabid + "]", g.tab.links.ul).find("a").text();  LigerMenuCookie.Remove(tabid,tabname);

示例图:


LigerUI扩展,进入后台时打开上次未关闭的菜单_全文搜索_02




5:打开后台首页

在$(function() {  });页面js初始化的模块中追加内容:

//打开上一次未关闭的选项卡,从Cookie中读取
var arry_menu_item = LigerMenuCookie.GetDate();
if (arry_menu_item != null && arry_menu_item.length > 0) {
    for (var i = 0; i < arry_menu_item.length; i++) {
        var arry_menu_item_tabid = arry_menu_item[i].tabid;
        var arry_menu_item_tabname = arry_menu_item[i].tabname;
        var arry_menu_item_tabsrc = arry_menu_item[i].src
        f_addTab(arry_menu_item_tabid, arry_menu_item_tabname, arry_menu_item_tabsrc);
    }
}