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 相关文章推荐
获取DOM对象的几种扩展及简写
Oct 09 Javascript
对YUI扩展的Gird组件 Part-2
Mar 10 Javascript
javascript function、指针及内置对象
Feb 19 Javascript
js function定义函数的几种不错方法
Feb 27 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
Node.js制作简单聊天室
Jan 12 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
vue权限路由实现的方法示例总结
Jul 29 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 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之变量、常量学习笔记
2008/03/27 PHP
php二分查找二种实现示例
2014/03/12 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python比较2个xml内容的方法
2015/05/11 Python
python之django母板页面的使用
2018/07/03 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python多维数组分位数的求取方式
2020/03/03 Python
python 实现客户端与服务端的通信
2020/12/23 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
个人自荐书
2013/12/20 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
放牛班的春天观后感
2015/06/01 职场文书
运动会通讯稿50字
2015/07/20 职场文书
优质服务标语口号
2015/12/26 职场文书