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 的addEventListener()及attachEvent()区别分析
May 21 Javascript
页面只有一个text的时候,回车自动submit的解决方法
Aug 12 Javascript
javascript模拟select,jselect的方法实现
Nov 08 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
js闭包的用途详解
Nov 09 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
node.js微信公众平台开发教程
Mar 04 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 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
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
js DOM的学习笔记
2011/12/22 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
python抓取网页内容示例分享
2014/02/24 Python
简单解决Python文件中文编码问题
2015/11/22 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
群众路线个人对照检查材料
2014/09/23 职场文书
谢师宴邀请函
2015/02/02 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
Java实现给Word文件添加文字水印
2022/02/15 Java/Android