javascript 利用Image对象实现的埋点(某处的点击数)统计


Posted in Javascript onDecember 28, 2012

需求:统计用户页面某处的点击数或者执行到程序中某个点的次数
特点:根据实际情况,创建多个Image对象,原则谁空闲谁做事。解决因过快发送埋点数据导致部分埋点缺失的问题。
实现:(注下面的代码依赖jQuery)

var Statistic= { 
arrImg:[], 
log:function(from){ 
//如果参数为空,则不处理 
if(typeof(from)=="undefined" || from=="") return; 
var me=this,img,imgHandler,arrImg,len=0,index=-1; 
arrImg=me.arrImg; 
len=arrImg.length; 
//查询可用的Image对象 
for(var i=0;i<len;i++){ 
if(arrImg[i].f==0){ 
index=i; 
break; 
} 
} 
//取出或者生成Image对象 
if(index==-1){ 
img=$(new Image()); 
arrImg.push({f:1,img:img}); 
index=(len==0?0:len); 
}else{ 
img=arrImg[index].img; 
} 
//标记Image对象为正在使用状态 
arrImg[index].f=1; 
//记录所使用的Image对象的位置 
img.data("vid",index); 
imgHandler = function(){ 
var vid=$(this).data("vid"); 
if(vid>=0){ 
arrImg[vid].f=0; 
} 
}; 
img.unbind().load(imgHandler).error(imgHandler); 
var arr = [],ref,url="http://z.ccccccc.com/beacon.gif?"; 
ref = document.referrer; 
if (ref) { 
ref=encodeURIComponent(ref); 
}else{ 
ref=''; 
} 
//必须严格按照以下的先后顺序:t,r,from,version 
arr.push('t='+ (new Date()).getTime()); 
arr.push('r='+ref); 
$(img).attr("src",url+ arr.join('&')); 
} 
};
Javascript 相关文章推荐
javascript appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
基于jquery的横向滚动条(滑动条)
Feb 24 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
一个通过script自定义属性传递配置参数的方法
Sep 15 Javascript
js实现按钮控制图片360度翻转特效的方法
Feb 17 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
Sep 17 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 #Javascript
javascript延时加载之defer测试
Dec 28 #Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 #Javascript
Javascript图像处理—平滑处理实现原理
Dec 28 #Javascript
js获取网页高度(详细整理)
Dec 28 #Javascript
前台js改变Session的值(用ajax实现)
Dec 28 #Javascript
window.open的页面如何刷新(父页面)上层页面
Dec 28 #Javascript
You might like
PHP+javascript液晶时钟
2006/10/09 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
python数据封装json格式数据
2018/03/04 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
实习求职信
2013/12/01 职场文书
公司活动邀请函
2014/01/24 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
团日活动总结报告
2014/06/25 职场文书
运动会通讯稿200字
2015/07/20 职场文书
遗嘱范文
2015/08/07 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
nginx配置限速限流基于内置模块
2022/05/02 Servers