pjax无刷新加载后百度统计失效解决方案

2022/01/20更新

发现百度统计已经加入单页应用统计,可以自动记录启用PJAX后的切换事件,所以本文前述方法已无意义,仅作归档备份。如果在百度统计后台开启了单页应用,并且按照下文所叙的方案修改了PJAX回调,请将下文所叙PJAX自定义回调函数删除掉,避免重复统计。

开启方法:
百度后台开启单页应用


以下为旧方案


解决方法

注意,本人使用的是handsome主题自带的pjax功能,其后台较完善,可以直接设置pjax完成回调事件
非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请求后动作进行了修改
pjax.js

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){}

刷新缓存一气呵成,成功!

后记

Last modification:January 20, 2022
觉得有帮助的话,打赏一个呗~