идентификатор клиента Universal Analytics

Недавно мы перешли на универсальную аналитику, которая работает. Я пытался захватить идентификатор клиента в переменную js с помощью следующего кода:

<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-REMOVED', 'xxxx.xxx');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
</script>

Чтобы доказать, что переменная clientID захвачена, я пытаюсь записать ее на страницу, используя следующий код:

<script>
document.write(clientId);
</script>

Который ничего не пишет на страницу.

Я просмотрел этот сайт и другие, но не могу понять, чего мне не хватает. Я чувствую, что упускаю из виду что-то ослепительно очевидное. Любая помощь очень ценится.

В конечном итоге я буду записывать переменную в поле формы для обработки автономных шагов, происходящих в сторонней системе.


person user3643444    schedule 16.05.2014    source источник


Ответы (2)


В вашем коде переменная clientId объявлена ​​внутри функции. Следовательно, clientId не имеет глобальной области действия. Его значение недоступно вне функции. Необходимо присвоить значение из tracker.get('clientId') глобальной переменной, если вам нужно использовать ее позже. См. http://learn.jquery.com/javascript-101/scope/

person rwong    schedule 21.07.2014

На моей странице работает следующий вызов: ga(function(tracker) { alert(tracker.get('clientId'));})

Я делаю то же самое, что и вы, но вместо того, чтобы писать на странице, я предупреждаю об этом. Может быть, document.write работает не так, как ожидалось?

Если код, который вы разместили, такой же, как тот, который вы используете, причина, по которой он не работает, заключается в том, что document.write запускается до вызова обратного вызова. помните, что все, что вы передаете в ga(), является асинхронным.

person Avi    schedule 17.05.2014
comment
на самом деле это то же самое, что и отчет о проблеме, ga(function(tracker) { alert(tracker.get('clientId'));}) использует clientId в локальной области видимости функции, которая его ищет. - person Oren Bochman; 05.01.2016