AJAX使用CNZZ统计

PHP, 代码片段 2018/04/10

自从小站搭起来之后,遇到了各种各样的小问题。就比如这个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 条评论

  • jevin 评论于 回复

    已经换成百度统计了 :二哈:

  • 评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)