Google Analytics внутри, если еще заявление - PullRequest
0 голосов
/ 04 мая 2018

Я ломаю голову над проблемой кода отслеживания внутри оператора if else ...

Я установил cookie, когда посетитель принимает некоторые правила. Когда cookie не существует, вы получаете текст, который вы должны принять. Когда файл cookie существует, запустите код Google Analytics. Весь javascript я поместил в отдельный файл с именем cookieaccept.js

Это код де в файле .js:

function getCookie(name) {
  var cookie = document.cookie;
  var prefix = name + "=";
  var begin = cookie.indexOf("; " + prefix);

  if (begin == -1) {
    begin = cookie.indexOf(prefix);
    if (begin != 0) return null;
  } else {
    begin += 2;
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
      end = cookie.length;
    }
  }
  return unescape(cookie.substring(begin + prefix.length, end));
}

var myCookie = getCookie("cookieaccept");

if (myCookie == null) {
  document.write('To accept click here');
} else {
  (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', 'https://www.google-analytics.com/analytics.js', 'ga');

  ga('create', 'UA-00000000-1', 'auto');
  ga('send', 'pageview');
  ga('set', 'anonymizeIp', true);
}

Но он все еще загружает скрипт или его часть, даже если cookie не существует, и на сайте я получаю эту ошибку:

enter image description here

EDIT:

Я думаю, что проблема в операторе else в сочетании с функцией:

    } else {
    (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','https://www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-00000000-1', 'auto');
    ga('send', 'pageview');
    ga('set', 'anonymizeIp', true);
}

Поскольку даже если вы не принимаете cookie, этот код все равно будет загружен:

    ga('create', 'UA-00000000-1', 'auto');
    ga('send', 'pageview');
    ga('set', 'anonymizeIp', true);

Так что я думаю, что у меня есть определение функции другим способом, но я понятия не имею, как ...

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Если есть проблема с синхронизацией, возможно, попробуйте

  ....
  m.parentNode.insertBefore(a, m);
  setTimeout(function() {
    if (ga) {
      ga('create', 'UA-00000000-1', 'auto');
      ga('send', 'pageview');
      ga('set', 'anonymizeIp', true);
    }
  },2000);
  })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
}
0 голосов
/ 04 мая 2018

Способ, которым google analytics проверяет, реализован ли ваш код analytics.js, заключается в том, чтобы получить доступ к вашему веб-сайту, загрузить файл index и проверить, существует ли код analytics.js.

В вашем случае - код будет запущен только после того, как пользователь примет cookie, и, поскольку google-бот не будет "принимать" cookie внутри вашего веб-сайта - он не сможет увидеть, что код реализован там.

Что вы можете сделать, это открыть раздел «Реальное время» в Google Analytics (первый пункт в разделе «Отчеты» в левом меню внутри Google Analytics), получить доступ к своему веб-сайту, принять cookie и посмотреть, есть ли там данные. Если у вас есть данные - в основном это означает, что все работает правильно.

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