AJAX使用CNZZ统计
自从小站搭起来之后,遇到了各种各样的小问题。就比如这个AJAX下的CNZZ统计问题。
一般情况下触发统计都是以页面加载为主,具体来说就是页面的CNZZ统计JS被执行。而AJAX是局部刷新,静态文件(包含JS)是不会重新加载的。
之前就遇到了类似的问题:解决AJAX(PJAX)下代码高亮无法渲染的问题
好在CNZZ提供了AJAX下的解决方案,要不然又得一通瞎折腾。
准备
1.正常部署JS统计代码到页面的</body>标签前
2.在统计代码下部署预配置代码,详细配置
//声明_czc对象:
var _czc = _czc || [];
//绑定siteid,请用您的siteid替换下方"XXXXXXXX"部分
_czc.push(["_setAccount", "XXXXXXXX"]);
如果页面中只包含一个CNZZ统计代码,则 _czc.push([“_setAccount”, “XXXXXXXX”]) 可以省略,API将会自动匹配。但如果页面中添加了多个CNZZ统计代码,那这行代码就是必不可少的。只有此处绑定的siteid才会响应API请求,其他代码忽略请求,不受影响。
部署到ajax
只需要在ajax的complete或者success事件中加入CNZZ提供的虚拟PV跟踪代码。详细说明
_czc.push([ "_trackPageview",content_url,referer_url]);
所以只需要获取content_url和referer_url即可,我是这样写的:
$("body").on("click","a",function() {
//获取某a标签在click事件触发ajax时,当前页面的href
var referer_url = window.location.href;
$.ajax({
//这里是ajax事件
//省略
success: function(data){
//获取ajax执行后的当前页面的pathname
var content_url = window.location.pathname;
_czc.push([ "_trackPageview",content_url,referer_url]);
}
})
})
这样就实现了每次AJAX加载后能够调用CNZZ统计到信息
补充
有些Chrome插件,如uBlock,可能会屏蔽CNZZ的JS代码,导致预置的 _czc 失效。所以就需要判断CNZZ的JS是否已加载
if (typeof _czc != "undefined") {
_czc.push([ "_trackPageview",content_url ,referer_url]);
}
2 条评论
已经换成百度统计了