Howdy Stackoverflowies,
对于特定要求,我想建立一个网站,如果URL中定义了特定变量,我想排除对Google Analytics(分析)脚本的调用。
我在网上搜寻了一个简单的解决方案,但是我看过的所有内容看起来都太复杂了,涉及到用Javascript等手动创建函数。
到目前为止,我找到的最简单(但有点脏)的解决方案涉及到PHP代码段的调用,例如:
<?php
if ($_GET['dnt']===null)
{
?>
<!-- Recaptcha Script -->
<script src='https://www.google.com/recaptcha/api.js'></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=my_id"></script>
<script>
console.log('test');
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'my_id');
</script>
<?php } ?>
但是,无论用什么方法,在这段代码中,脚本总是被调用...我什至尝试用if子句替换
if(!isset($_GET['dnt']))
...但是结果完全一样。
您是否有SIMPLE替代品可以做到这一点? 我上面代码的来源是这篇文章:http://www.daniloaz.com/en/5-ways-to-exclude-your-own-visits-from-google-analytics/#comment-159117
谢谢。
答案 0 :(得分:0)
自从发布该消息以来,我一直在调查该问题,尽管测试了很多东西,但我无法使PHP正确读取$ _GET变量。我无法确定原因,并且由于没人能提供帮助,因此这就是我最终在jQuery中解决该问题的方法:
var $_GET = {};
document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
function decode(s) {
return decodeURIComponent(s.split("+").join(" "));
}
$_GET[decode(arguments[1])] = decode(arguments[2]);
});
//If variable "dnt" is defined, bypass Google Analytics
if(typeof $_GET["dnt"] == 'undefined')
{
var gA = "<script src='https://www.google.com/recaptcha/api.js'><\/script><script async src='https://www.googletagmanager.com/gtag/js?id=my_id'><\/script><script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'my_id');<\/script>";
$('body').append(gA);
}
这很丑,但是做得很好。