vue 处理单页使用百度统计#号被截断

2018-11-20  本文已影响0人  YellowPoint

vue百度统计代码;通过_trackPageview来手动添加# hash参数的链接,trackPageview说明

方案一: 有问题
var _hmt = _hmt || [];
window._hmt = _hmt; // 必须把_hmt挂载到window下,否则找不到
 (function () {
       var hm = document.createElement("script");
       hm.src = "https://hm.baidu.com/hm.js?"+ 百度站点id;
       var s = document.getElementsByTagName("script")[0];
       s.parentNode.insertBefore(hm, s);
  })();
router.beforeEach((to, from, next) => {
    if (window._hmt) {
        if (to.path) {
           window._hmt.push(['_trackPageview', '/#' + to.fullPath]);
        }
    }
    next();
});

那这样的话第一个页面的#号就没有统计到呀
再修改到router.afterEach里,以及兼容hash和search的参数
方案二:
try {
    //百度统计
    let _hmt = _hmt || [];
    window._hmt = _hmt; // 必须把_hmt挂载到window下,否则找不到
    //关闭了自动PV跟踪
    window._hmt.push(['_setAutoPageview', false]);
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?百度id";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();

} catch(e) {
    console.log('百度统计', e)
}

router.afterEach((to, from) => {
    try {
        //关闭了自动PV跟踪
        window._hmt.push(['_setAutoPageview', false]);
        
        --废弃代码开始,仅做记录,使用请删除--
        
        //  百度统计默认截断#号后面的参数,故通过手动来添加pv,去掉origin之后的所有
        //一开始以为直接用location.href后来发现
        //这里页面还没有跳转呀,获取的还是from页面的地址,还是要用to.fullpath
        window._hmt.push(['_trackPageview',  location.href.replace(location.origin,'')]);
        
        --废弃代码结束--

        //  百度统计默认截断#号后面的参数,故通过手动来添加pv
        window._hmt.push(['_trackPageview',  '/'+ location.search +'#' + to.fullPath]);
    } catch(e) {
        console.log('百度统计', e)
    }

})

vue spa中使用百度统计

上一篇 下一篇

猜你喜欢

热点阅读