扫一扫浏览

网面参数一直向后传递的javasript代码

未结贴
0 164
gay未认证 2019-01-20 10:09:15
收藏

在做网页代码跟踪或数据统计,例如百度竞价或其它推广方式的代码跟踪统计时,推广页面一般我们会加上一些标识参数,例如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;
    }
});

如果你要用上,拿去用吧。

最近热帖 HOT TOPIC
【全套视频】thinkphp5视频教程 1264
thinkphp5隐藏默认模块的一些问题 1151
TPFrame框架robot模块重磅来袭,内附2.1版本 1078
教你如果处理高并发数据不同步的问题php篇 1077
tpframe安装教程 1067
tpframe新建主题 1015
slide模块发布 1005
tpframe应用目录结构 1001
thinkphp5自动完成操作,两次运行的详解 982
TPFrame 2.1 beta版本正式发布,全部插件式开发到来 939
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2
tpframe-curd操作之添加数据 2
tpframe能带给你的,让你快速搞定各服务端(api,pc,mobile,wechat)代码的框架 2
slide模块发布 2
透析thinkphp5升级版开发框架tpframe 2
爆料早知道:又拍云存储插件上线我有好想法