Вызывать скрипт, только если переменная GET не существует в URL - PullRequest
0 голосов
/ 02 ноября 2019

Howdy Stackoverflowies,

Для конкретных требований я хотел бы создать веб-сайт, на котором я хочу исключить вызов сценария Google Analytics, если в URL-адресе определена определенная переменная.

Я искал в Интернете в поисках простого решения, но все те, которые я читал, казались слишком сложными, включая ручное создание функций в 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']))

... но результат точно такой же.

У вас есть ПРОСТОЙ альтернативный вариант? Мой источник кода выше - эта статья: http://www.daniloaz.com/en/5-ways-to-exclude-your-own-visits-from-google-analytics/#comment-159117

Спасибо.

1 Ответ

0 голосов
/ 06 ноября 2019

Я исследую эту проблему с тех пор, как отправил это сообщение, и я просто не могу заставить 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);
}

Это довольно уродливо, но хорошо справляется со своей работой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...