请注意,本文编写于 1712 天前,最后修改于 1052 天前,其中某些信息可能已经过时。
pjax无刷新加载后百度统计失效解决方案
2022/01/20更新
发现百度统计已经加入单页应用统计,可以自动记录启用PJAX后的切换事件,所以本文前述方法已无意义,仅作归档备份。如果在百度统计后台开启了单页应用,并且按照下文所叙的方案修改了PJAX回调,请将下文所叙PJAX自定义回调函数删除掉,避免重复统计。
开启方法:
以下为旧方案
前几天刚换用了友人C的handsome主题并启用了pjax,今天在看百度统计后台时发现了统计数据有问题,从首页访问内页文章的记录全部没有,这是pjax时间导致的百度统计代码并没有被重新加载,根据自己之前使用wordpress时对pjax的使用经验,稍作调整,成功解决
解决方法
注意,本人使用的是handsome主题自带的pjax功能,其后台较完善,可以直接设置pjax完成回调事件
非handsome主题用户可以看后文改文件配置法参照自己情况进行修改
非handsome主题用户可以看后文改文件配置法参照自己情况进行修改
打开后台外观设置,找到 PJAX - PJAX回调函数 ,新增一行
_hmt.push(['_trackPageview', document.location.pathname+document.location.search+document.location.hash]);
最后保存。
上面这种写法是因为我想记录整个URL信息,即包含查询参数以及hash锚点。如果想要像网络上其他教程一样只记录页面地址,可以换成
_hmt.push(['_trackPageview', document.location.pathname]);
最后保存。
再去百度统计查看,现在应该可以记录到pjax访问页面的记录了。
(备用方法)修改pjax的js文件达成目的
之前在用wordpress时用的一个主题也是用的是pjax无刷新加载,那款主题并没有直接给出pjax回调的快捷设置,于是我找到了主题pjax的js文件,直接在其ajax请求后动作进行了修改
try{_hmt.push(['_trackPageview', document.location.pathname+document.location.search+document.location.hash]);console.log("推送至百度站长统计:"+document.location.pathname+document.location.search+document.location.hash);}catch(err){}
刷新缓存一气呵成,成功!
后记
又水了一篇文章真开心
4 comments
那么谷歌的统计呢
我没有使用谷歌统计,不清楚具体API,可以看看这位博主写的百度分析和谷歌分析适配 pjax
不看你的文章我都不知道百度统计会因为pjax而失效
我之前刚接触pjax时也是没注意,直到有一天在百度统计后台看到了满满的全部是首页的记录