扫一扫浏览

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

未结贴
0 261
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隐藏默认模块的一些问题 1486
【全套视频】thinkphp5视频教程 1443
教你如果处理高并发数据不同步的问题php篇 1238
tpframe安装教程 1187
TPFrame框架robot模块重磅来袭,内附2.1版本 1181
tpframe新建主题 1159
父元素flex之后,子元素高度自适应问题 1152
tpframe应用目录结构 1107
slide模块发布 1095
thinkphp5自动完成操作,两次运行的详解 1087
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 3
thinkphp5自动完成操作,两次运行的详解 2
tpframe-curd操作之添加数据 2
tpframe能带给你的,让你快速搞定各服务端(api,pc,mobile,wechat)代码的框架 2
爆料早知道:TPFrame v3.2版本已更新我有好想法