每次 session 是否可以只发送一次谷歌分析事件?我不想在每次浏览量中都发送我的特定事件。
我想要达到的目标:
我目前正在运营一个没有任何广告的网站。我想测试我的网站有多少访问者在使用广告拦截器。
我会添加一个元素
<div class="ad"></div>
这可能会被每个广告拦截器(至少大多数)过滤掉。然后我会用jquery测试元素是否存在
$(function(){
function test(){
var len = $('.ad').length;
if(len === 0){
ga.send(..);
}
}
// give adblockers a sec to remove everything, just in case
setTimeout(test,500);
});
我可能可以使用自定义 cookie 的解决方法,例如
// simplified
if (!cookie) {
test();
}
但如果仅使用 google api 可以做到这一点,我会很感兴趣
请您参考如下方法:
Google Analytics 事件是一种命中类型(如综合浏览量),不能将其限定为 session 或用户。即使每个 session 只能发送一个事件(使用 cookie 或 sessionStorage,您实际上也不会在 GA 报告中了解全部情况。
要提供更好的解决方案,请考虑使用具有“ session ”范围的自定义维度来存储该数据。很酷的地方在于维度应用于 全部 范围内的点击类型 - 意味着任何网页浏览、事件等也具有与之关联的维度。
为此,请在自定义定义中的属性设置下的 Google Analytics(分析)管理中创建维度。获取索引号(类似于 'dimension1' 或 'dimension 4' 的字符串)并粘贴行 之前 发送综合浏览量(理想情况下)或事件。
记住:维度不是命中,因此只需设置它们,直到命中也被发送!另外,一定要启用non-interaction在事件上(如果这是您选择的路线),否则您将误报来自使用广告拦截器的反弹。
这是理想的片段(注意:如果您要将 setTimeout 作为检测的一部分,请不要使用此方法,因为它也会延迟综合浏览量发送...考虑一个不需要超时的方法。):
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-Y', 'auto');
//Detection goes here. If true:
ga('set', 'dimension1', 'Ad Blocker'); //Change 'dimension1' to yours.
ga('send', 'pageview');
</script>
如果您无法在
<head> 之前进行检测,则上面的代码将如下所示GA 发送网页浏览片段。
function test(){
var len = $('.ad').length;
if(len === 0){
ga('set', 'dimension1', 'Ad Blocker'); //Change 'dimension1' to yours.
ga('send', 'event', 'Ad Blocker', {nonInteraction: true}); //Add action and label as needed.
}
}


