最近跟研发配合做了一个在登录,注册等相关页面统计用户ip来源、uv、pv。主要是根据当前的url,获取相关的参数,设置cookie值,然后根据页面输出的相关数据跟cookie相关的匹配,进行操作,当用户登录或者注册成功的时候,再获取cookie,把cookie传给后台,最后删除cookie值。
我以前写js很少关于cookie相关的技术,所以对这方面的技术也不是太了解,在做这个项目之前,花费了一段时间去研究这些,本来想着用jQuery cookie插件呢,后来听同事说,我们公司其他项目大都是arale-cookie的组件,所以两个相关的组件,我都大致研究了一下,其实两者用起来差不多,都是设置、获取、删除cookie类的。
arale-cookie的用法说明:
Cookie 操作方法。
get Cookie.get(name, [options])
获取 cookie 值。options 参数可选,取值如下:
converter 转换函数。如果所获取的 cookie 有值,会在返回前传给 converter 函数进行转换。
选项对象。对象中可以有两个属性:converter 和 raw. raw 是布尔值,为真时,不会对获取到的 cookie 值进行 URI 解码。
注:如果要获取的 cookie 键值不存在,则返回 undefined.
例子:
define(function() {
var Cookie = require(‘cookie‘);
// setup
document.cookie = ‘foo=1‘;
document.cookie = ‘bar=2‘;
Cookie.get(‘foo‘);
// returns ‘1‘
Cookie.get(‘bar‘, function(s) { return parseInt(s); } );
// returns 2
});
set Cookie.set(name, value, [options])
设置 cookie 值。参数 options 可选,可以有以下属性:path(字符串)、domain(字符串)、 expires(数值或日期对象)、raw(布尔值)。当 raw 为真值时,在设置 cookie 值时,不会进行 URI 编码。
例子:
define(function() {
var Cookie = require(‘cookie‘);
Cookie.set(‘foo‘, 3);
Cookie.set(‘bar‘, 4, {
domain: ‘example.com‘,
path: ‘/‘,
expires: 30
});
});
`
remove Cookie.remove(name, [options])
移除指定的 cookie.
例子:
define(function() {
var Cookie = require(‘cookie‘);
Cookie.remove(‘foo‘);
Cookie.remove(‘bar‘, {
domain: ‘example.com‘,
path: ‘/‘
});
});
功能实现的主要代码,首页是获取url后面的参数,由于url参数名称是固定的,所以写起来比较简单
当前的地址:http://work.XXXXXX.cn/?sfrom=1_28
var getArgs = function(){
var args = [],
//获取参数sform=1_28
qs = location.search.length>0?location.search.substring(1):‘‘;
var args = qs.split(‘=‘);
var item = [],
items = args[1].split(‘_‘),//把参数值分开,获取不同的值
reg = new RegExp("[0-9]+"),
suc = items[1].match(reg); //28是user的id值,需要过滤到其后面的其他
item.push(items[0],suc); //把获取的值放到一个数组里
return item;
}
var userargs = getArgs();
var userCookie = (userargs.join(‘_‘)); //cookie值以1_28形式保存,其实下划线前面代表的是类型,从登录或者注册入口
Cookie.set(‘userCookie‘, userCookie, {
domain: ‘XXXX.cn‘,
path: ‘/‘,
expires: 7*60*60*1000
});
//下面主要是根据获取的值在不同页面,把类型值传给后台验证,主要是跨域问题 ,采用了jsonp的格式
if(USERPV){
if(USERPV.suc ==0){ //suc代表的是否登录或者注册成功,type代表入口类型
var type = userargs[0];
if( USERPV.type==type){
var chekUrl = ‘http://my.op.XXXX.cn/pvip/index/sfrom/‘+userargs.join("_");
$.getJSON(chekUrl, ‘callback=?‘, function(data) {
})
}
} else if(USERPV.suc == 1){
var cookieArr =Cookie.get(‘userCookie‘);
var type = cookieArr[0];
Cookie.remove(‘userCookie‘, {
domain: ‘gongchang.net‘,
path: ‘/‘
});
if( USERPV.type==type){
var chekUrl = ‘http://my.op.XXXX.cn/pvip/index/suc/1/sfrom/‘+cookieArr;
$.getJSON(chekUrl, ‘callback=?‘, function(data) {
})
}
}
}
总结下来整个功能也就利用了cookie的设置,获取,删除等操作方法,url参数获取,ajax跨域解决问题等技术知识点。
时间: 2024-10-31 08:00:39