扫一扫浏览

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

未结贴
0 519
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
父元素flex之后,子元素高度自适应问题 2569
thinkphp5隐藏默认模块的一些问题 2229
关于thinkphp5.0.x getshell漏洞的说明 1903
【全套视频】thinkphp5视频教程 1887
教你如果处理高并发数据不同步的问题php篇 1797
移动web资源整理,你值得收藏的干货 1777
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 1703
PHP如何判断字符串是否为json格式 1671
tpframe新建主题 1615
omnicore rpc api中文手册【usdt】 1590
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2
thinkphp5隐藏默认模块的一些问题 2
tpframe-curd操作之添加数据 2
爆料早知道:Tcms微信、百度小程序、微信公众号功能已全部上线我有好想法