web开发过程中如果网站有一部分信息是存储在cookie中并与服务器交互的话,那么前台有时就会遇到需要对cookie中信息进行操作的情况,一个最典型的例子就是在前台判断用户是否登录过当前所访问的网站。
可以用js原生的代码操作cookie,不过对于已经习惯在前台使用jquery的人员来说,最好能有一种直接扩展到jquery实例对象中的方法来统一操作风格,这里记录一个个人感觉还算简洁的方案。
$.extend({
cookie : function(name, val) {
if (!val) {
var a = document.cookie.match(RegExp("(^|\s*)" + name + "=([^;]*)(;|$)"));
return a ? decodeURIComponent(a[2]) : null;
} else {
document.cookie = name + "=" + escape(val);
}
},
removeCookie : function(name) {
var expires = new Date();
expires.setTime(expires.getTime() - 1);
document.cookie = name + "=;expires=" + expires.toGMTString();
}
});
这样的话使用起来就统一风格了,以登录为例:
取值--$.cookie("logonFlag");
赋值--$.cookie("logonFlag", true);
删除--$.removeCookie("logonFlag");
cookie方法作为赋值功能使用时还可以提供第三个参数扩展,由用户对需要赋值的cookie提供可选的属性并赋值。
实际使用时发现这里的赋值/取值有些限制,对某些特殊符号(比如“>”、“<”符号)不能有效的编码/解码,不过总体来说还是很方便使用的。