Google Analytics без HTML-страницы - PullRequest
       5

Google Analytics без HTML-страницы

2 голосов
/ 25 декабря 2011

Как я могу запустить фрагмент Google Analytics из файла .js, который не содержит HTML?При отсутствии HTML я получаю сообщение об ошибке консоли:

Uncaught TypeError: Cannot read property 'parentNode' of undefined

УТОЧНЕНИЕ Извините, это был очень неясный вопрос.Я создал расширение Chrome, которое не имеет фактической страницы, а внедряет скрипт для запуска на объявленной веб-странице.Я хотел, чтобы Google Analytic отслеживал, сколько раз использовался скрипт.Мое решение предоставлено ниже.

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Проблема в том, что нет элемента страницы, потому что скрипт внедряется.

Вот исправление:

window.onload = function() {

    var head = document.getElementsByTagName("head")[0];

    var code = document.createElement('script');
    code.text = "var _gaq = _gaq || [];\n_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);\n_gaq.push(['_trackPageview']);";

    var ga = document.createElement('script');
    ga.type = 'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

    var s = document.getElementsByTagName('script')[0];

    head.appendChild(code);
    code.parentNode.insertBefore(ga, s);
};
0 голосов
/ 25 декабря 2011

Я предполагаю, что вы хотите зарегистрировать просмотры страниц в Google Analytics, когда у вас нет контроля над HTML ...

Если это так, этот небольшой фрагмент документации содержит немного информации по этому вопросу: http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html

Это то, что позволяет загружать удаленный скрипт и вызывать функции:

function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
}

И эта функция сообщает аналитикам, что отслеживать:

_gaq.push(...);

Это создаст элемент асинхронного скрипта, который загрузит загрузку всего кода аналитики.Все, что помещается в массив _gaq, будет обрабатываться аналитикой.Оттуда вам решать, что выдвинуть на этот массив.Может быть, это вам поможет: http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gaq.html

...