背景

单页面应用使用百度统计需要使用_trackPageview和_setAutoPageview API用来统计每个页面的访问, 应用里如果同时埋放多段百度统计的访问分析代码又需要使用_setAccount API。但是如果单页面应用里又同时埋放多段百度统计的访问分析代码该如何处理呢?

How

Step1 引入方式

直接呈上代码,注意事项都写在注释里了。

<script type="text/javascript">
    var __gBaiduSiteIdConfig__ = {
        siteId1: 'xx{你的siteId}xx', // 百度统计siteId 1(请原谅这种命名)
        siteId2: 'xx{你的siteId}xx' // 百度统计siteId 2
    };
    var _hmt = _hmt || [];
    _hmt.push(['_setAccount', __gBaiduSiteIdConfig__.siteId1]); // 先指定使用的siteid
    _hmt.push(['_setAutoPageview', false]);     // 再指定该siteId下的操作
    _hmt.push(['_setAccount', __gBaiduSiteIdConfig__.siteId1]);// 先指定使用的siteid
    _hmt.push(['_setAutoPageview', false]);  // 再指定该siteId下的操作
    // 百度统计统计代码引入1
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?" + __gBaiduSiteIdConfig__.siteId1; // SiteId不能少
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
    // 百度统计统计代码引入2
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?" + __gBaiduSiteIdConfig__.siteId2;// SiteId不能少
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>

Step2 使用

后续在使用百度统计的JS-API前都要指定使用的SiteId.

function sendBaiduUbt(siteId, url) {
    if(!url) {
        // 当前路径转成以'/'开头的相对地址
        url = window.location.href.replace(new RegExp('^.+' + window.location.host), '');
    }
    window._hmt.push(['_setAccount', siteId]);
    window._hmt.push(['_trackPageview', url]);
}

参考

http://tongji.baidu.com/open/...
http://tongji.baidu.com/open/...
http://tongji.baidu.com/open/...


普拉斯强
2.7k 声望53 粉丝

Coder