在做网页代码跟踪或数据统计,例如百度竞价或其它推广方式的代码跟踪统计时,推广页面一般我们会加上一些标识参数,例如https://www.tpframe.com?bd_ad,别人通过参数进来后,如果是第一个页面你还能统计到,如果在网页里面进行其它页面的站内跳转了,你可能就跟踪不到了,一般的做法就是把参数?bd_ad一直跟在url后面,不管是跳转到哪个页面,后面都跟上参数bd_ad,这样你就很容易统计出有效数据了。怎么实现呢?javascript代码如下:
//追踪代码
function eventGetPath(ele,path_arr) {
path_arr.push(ele);
if(ele.parentNode.tagName=='body'||ele.parentNode.tagName=='BODY'){
return path_arr;
}else {
return eventGetPath(ele.parentNode,path_arr);
}
}
document.getElementsByTagName('body')[0].onclick=function(event){
/**
* event解决浏览器兼容
* @type {*|Event}
*/
event=event||window.event;
event.target=event.target||event.srcElement;
/**
* 解决event.path的浏览器兼容
*/
var path=event.path||eventGetPath(event.target,[]);
/**
*
* 判断是否为提交按钮
* */
var url=location.href.split('?')[1];
var zhengze=new RegExp("#");
if(url==undefined){
url=location.href.split('?')[1];
}
url=(url!==undefined)?'?'+url.split('#')[0]:"";
for(var i=0;i<path.length;i++){
if(path[i].tagName=='a'||path[i].tagName=='A'){
var herfs=path[i].getAttribute('href');
if(zhengze.test(herfs)){
if(herfs.indexOf('http://')==0||herfs.indexOf('https://')==0){
location.href=path[i].href.split('#')[0]+url+'#'+path[i].href.split('#')[1];
}else{
location.href=path[i].href;
}
return false
}else if(herfs==false||herfs==null){
return false
}
if(path[i].getAttribute('target')=='_blank'){
window.open(path[i].href+url);
return false;
}else{
location.href=path[i].href+url;
return false;
}
break;
}
}
};
这是原生js的实现方式,下面再附上jquery的实现
$("a").click(function(){
var url=location.href.split('?')[1]+"?";
var zhengze=new RegExp("#");
var herfs=$(this).attr('href');
if(zhengze.test(herfs)){
if(herfs.indexOf('http://')==0||herfs.indexOf('https://')==0){
location.href=herfs.split('#')[0]+url+'#'+herfs.split('#')[1];
}else{
location.href=herfs;
}
return false
}else if(herfs==false||herfs==null){
return false
}
if($(this).attr('target')=='_blank'){
window.open(herfs+url);
return false;
}else{
location.href=herfs+url;
return false;
}
});
如果你要用上,拿去用吧。