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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
js 取消页面可以选中文字的功能方法
Jan 02 Javascript
vue中在vuex的actions中请求数据实例
Nov 08 Javascript
通过js实现压缩图片上传功能
Feb 25 Javascript
js+css3实现简单时钟特效
Sep 13 Javascript
使用JavaScript实现贪吃蛇游戏
Sep 29 Javascript
vue 授权获取微信openId操作
Nov 13 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
SONY SRF-M100的电路分析
2021/03/02 无线电
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
python Tensor和Array对比分析
2020/01/08 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
django 读取图片到页面实例
2020/03/27 Python
导致python中import错误的原因是什么
2020/07/01 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
大学毕业后的十年规划
2014/01/07 职场文书
九九重阳节标语
2014/10/07 职场文书
经费申请报告范文
2015/05/18 职场文书
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android