JS实现点击大事统计的简洁实例__第1页
JS实现点击大事统计的简洁实例__第2页
JS实现点击大事统计的简洁实例__第3页
JS实现点击大事统计的简洁实例__第4页
JS实现点击大事统计的简洁实例__第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JS实现点击大事统计的简洁实例_ 下面我就为大家带来一篇JS实现点击大事统计的简洁实例。我觉得挺不错的,现在就分享给大家,也给大家做个参考。 JS实现网站点击大事的统计功能。 点击大事上报,分为立刻上报和延时上报,延时上报通过cookie存储。 一、配置参数,主要用于定义上报的一些配置信息。通过在外部定义_clickc对象重置参数。 参数名称 类型 默认值 说明 selector: string _click_rp 点击触发的选择器,支持ID、class prefix: string _rp_ 需要上报的参数属性名前缀,如_rp_type,表示要上报type参数的值 cookie: strin

2、g _click_rp 延迟上报时的cookie名称 domain: string cookie存储的域名(可以通过用法的网站来获得) delay: boolean false 是否延迟上报,延迟上报通过cookie实现 delay_attr: string _delay 标签中指定是否延迟上报,优先级最高,ture延时,其他不延时。 二、外部参数,主要用于定义上报的参数。通过在外部定义_clickq数组增加参数。 三、标签参数,用法前缀_rp_定义,上报的时候会将全部_rp_开头的参数上报。参数的格式分为两种,1种纯字符,1中回调函数。 a class=_click_rp href= _rp

3、_a=aa _rp_b=bba/a,表示上报时的参数为a=aab=bb 1,纯字符,挺直定义字符,表示需要上传参数的值。 2,回调函数,以javascript:开头。只需定义函数体,在函数体中返回参数的值。 如,a href=/qa_question/press.html id=ques_search_btn class=_click_rp _rp_act=javascript:if($(#ques_search_btn).text()=提问)return act_qa_ques;elsereturn act_search;span提问/span/a 四、延时上报,分为三种优先级,如下由高到低

4、 1,标签属性_delay是否指定为true,假如是表示延迟上报。 2,是否为特定标签,如a标签本窗口打开(target等于_self或空),submit按钮。 3,配置参数中指定的delay参数。 五、支持:需要依靠jQuery插件。 六、用法案列 1,引入JS var _clickq = _clickq | ; _clickq.push(param1, value1); var _clickc = selector:_click_rps; (function() var click = document.createElement(script); click.src = / var s

5、= document.getElementsByTagName(script)0; s.parentNode.insertBefore(click, s); )(); 2,定义选择器和上传参数 如,a class=_click_rp href= _rp_a=aa _rp_b=bba/a (function () / 默认参数 var options = selector: _click_rp, prefix: _rp_, cookie: _click_rp, domain: , delay: false, delay_attr: _delay ; var params = ; var _par

6、ams = ; var clickObj = null; / 当前点击对象 / 获得对象 var getObject = function(selector) if (typeof(selector) = object) return selector; else var obj = $(#+selector); if (obj.length) return obj; obj = $(.+selector); if (obj.length) return obj; return null; / 获得选择器 var getSelector = function(selector) return

7、# + selector + ,. + selector; / 操作cookie函数 var getCookie = function(c_name) if (document.cookie.length0) c_start = document.cookie.indexOf(c_name + =) if (c_start!=-1) c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(;,c_start) if (c_end=-1) c_end=document.cookie.length return unescap

8、e(document.cookie.substring(c_start,c_end) return ; var setCookie = function(c_name,value,expiredays,path,domain) var exdate = new Date() exdate.setDate(exdate.getDate()+expiredays) var cookie = c_name+ = +escape(value)+(expiredays=null) ? : ;expires=+exdate.toGMTString(); if (path) cookie = cookie

9、+ ;path= + path; if (domain) cookie = cookie + ;domain= + domain; document.cookie = cookie; / 获得标签中的参数 var getAttrParam = function() if ( clickObj ) var attrs = clickObj.get(0).attributes; $.each(attrs, function(i) var name = ; if ( name.indexOf(options.prefix) = 0 ) name = name.replace(o

10、ptions.prefix, ); var value = attrsi.value; if ( value.indexOf(javascript:) = 0 ) / 执行js获得参数值 value = value.replace(javascript:, ); eval(var valFun = function() + value +;); value = valFun(); paramsname = value; ); / 获得默认参数 var getDefaultParam = function() if(document) params.url = document.URL | ;

11、params.referrer = document.referrer | ; / 时间 var date = new Date(); params.ltime = date.getTime() / 1000; / 时间戳 params.t = date.getTime(); var getParamStr = function() getAttrParam(); getDefaultParam(); / 合并配置参数 for(var key in _params) paramskey = _paramskey; /拼接参数串 var args = ; for(var i in params)

12、 if(args != ) args += ; args += i + = + encodeURIComponent(paramsi); return args; / 清空参数 var clearParam = function() params = ; / 是否立刻上报,假如跳转页面,则计入延时上报 var getIsDelay = function() if ( clickObj ) / 有具体指定 if ( clickObj.attr(options.delay_attr) = true ) return true; / 特定标签 / a标签 if ( clickObj.is(a) )

13、if ( clickObj.attr(href).indexOf(javascript:) = 0 ) return false; if ( clickObj.attr(target) clickObj.attr(target) != _self ) return false; return true; / submit按钮 if ( (clickObj.is(input) | clickObj.is(button) clickObj.attr(type) = submit ) return true; return options.delay; / 加入cookie,下次上报 var set

14、DelayCookie = function() / 获得参数 var args = getParamStr(); var cookieStr = getCookie(options.cookie); if ( cookieStr = ) cookieStr = args; else cookieStr = cookieStr + , + args; setCookie(options.cookie, cookieStr, 7, /, options.domain); clearParam(); / 上报cookie var rpCookie = function() / 获得cookie,循

15、环操作 var cookieStr = getCookie(options.cookie); if ( cookieStr ) var cookieArr = cookieStr.split(,); for(var key in cookieArr) rpClick(cookieArrkey); setCookie(options.cookie, , 7, /, options.domain); / 上报 var rpClick = function(args) if ( args = undefined ) args = getParamStr(); var img = new Image(

16、1, 1); img.src = + args; (img.src); clearParam(); / js上报函数 var rpComm = function(obj) (click); clickObj = obj; if ( getIsDelay() ) setDelayCookie(); else rpClick(); /解析外部配置 if(_clickc) for(var i in _clickc) optionsi = _clickci; /解析外部参数 if(_clickq) for(var i in _clickq) _params_clickqi0 = _clickqi1; / 供应外部js函数 $.rpComm = function(obj) rpComm(obj); $.fn.rpComm = function() rpComm($(this); / cookie中的上报 rpCookie(); / 初始化信息 var _time = new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论