javascript 利用Image對象實現(xiàn)的埋點(某處的點擊數(shù))統(tǒng)計
更新時間:2012年12月28日 10:26:00 作者:
統(tǒng)計用戶頁面某處的點擊數(shù)或者執(zhí)行到程序中某個點的次數(shù);根據(jù)實際情況,創(chuàng)建多個Image對象,原則誰空閑誰做事,解下來詳細介紹,需要了解的朋友可以參考下
需求:統(tǒng)計用戶頁面某處的點擊數(shù)或者執(zhí)行到程序中某個點的次數(shù)
特點:根據(jù)實際情況,創(chuàng)建多個Image對象,原則誰空閑誰做事。解決因過快發(fā)送埋點數(shù)據(jù)導(dǎo)致部分埋點缺失的問題。
實現(xiàn):(注下面的代碼依賴jQuery)
var Statistic= {
arrImg:[],
log:function(from){
//如果參數(shù)為空,則不處理
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;
}
//標(biāo)記Image對象為正在使用狀態(tài)
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='';
}
//必須嚴(yán)格按照以下的先后順序:t,r,from,version
arr.push('t='+ (new Date()).getTime());
arr.push('r='+ref);
$(img).attr("src",url+ arr.join('&'));
}
};
特點:根據(jù)實際情況,創(chuàng)建多個Image對象,原則誰空閑誰做事。解決因過快發(fā)送埋點數(shù)據(jù)導(dǎo)致部分埋點缺失的問題。
實現(xiàn):(注下面的代碼依賴jQuery)
復(fù)制代碼 代碼如下:
var Statistic= {
arrImg:[],
log:function(from){
//如果參數(shù)為空,則不處理
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;
}
//標(biāo)記Image對象為正在使用狀態(tài)
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='';
}
//必須嚴(yán)格按照以下的先后順序:t,r,from,version
arr.push('t='+ (new Date()).getTime());
arr.push('r='+ref);
$(img).attr("src",url+ arr.join('&'));
}
};
相關(guān)文章
使用JS location實現(xiàn)搜索框歷史記錄功能
這篇文章主要介紹了使用JS location實現(xiàn)搜索框歷史記錄功能,本文通過實例 代碼講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12
JavaScript實現(xiàn)數(shù)字?jǐn)?shù)組按照倒序排列的方法
這篇文章主要介紹了JavaScript實現(xiàn)數(shù)字?jǐn)?shù)組按照倒序排列的方法,涉及javascript中sort方法的使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
JS中字符串切割為數(shù)組/數(shù)組拼接為字符串的代碼例子
這篇文章主要給大家介紹了關(guān)于JS中字符串切割為數(shù)組/數(shù)組拼接為字符串的相關(guān)資料,數(shù)組是JavaScript中最強大的數(shù)據(jù)結(jié)構(gòu),我們常常通過將字符串轉(zhuǎn)換為數(shù)組來解決許多算法,需要的朋友可以參考下2023-09-09
Javascript從數(shù)組中隨機取出不同元素的兩種方法
這篇文章給大家分享了兩種Javascript從數(shù)組中隨機取出不同元素的方法,大家可以都學(xué)習(xí)學(xué)習(xí),這樣更能有助于大家的學(xué)習(xí)和理解,下面來一起看看吧2016-09-09

