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 相关文章推荐
jquery 常用操作方法
Jan 28 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
jquery实现拖动效果
Aug 10 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
JS打开摄像头并截图上传示例
Feb 18 Javascript
AngularJS发送异步Get/Post请求方法
Aug 13 Javascript
Vue插件从封装到发布的完整步骤记录
Feb 28 Javascript
详解Vue的watch中的immediate与watch是什么意思
Dec 30 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
javascript import css实例代码
2008/07/18 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
js实现圆盘记速表
2015/08/03 Javascript
javascript如何创建对象
2016/08/29 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
家庭户外服装:Hawkshead
2017/11/02 全球购物
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
家庭教育先进个人事迹材料
2014/01/24 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
超市工作总结范文2014
2014/12/19 职场文书
恰同学少年观后感
2015/06/08 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
sql注入教程之类型以及提交注入
2021/08/02 MySQL