Теги не запускаются и события не регистрируются в одностраничном веб-приложении, встроенном в Angular 4 - PullRequest
0 голосов
/ 03 июля 2018

В настоящее время я работаю с приложением Angular 4. Код для index.html так:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Copofi</title>
    <base href="/">

    <link rel="icon" type="image/x-icon" href="favicon.ico">

    <!-- Google Tag Manager -->
    <script>
    (function(w, d, s, l, i) {
        w[l] = w[l] || [];
        w[l].push({
            'gtm.start': new Date().getTime(),
            event: 'gtm.js'
        });
        var f = d.getElementsByTagName(s)[0],
            j = d.createElement(s),
            dl = l != 'dataLayer' ? '&l=' + l : '';
        j.async = true;
        j.src =
            'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'dataLayer', 'GTM-H1TH3R3');
    </script>
    <!-- End Google Tag Manager -->
</head>

<body>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-H1TH3R3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->

    <app-root></app-root>

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

        ga('create', 'UA-12345678-9', 'auto');  
    </script>

</body>

</html>

Когда я включаю предварительный просмотр, никакие события не инициируются, не обнаруживаются и не записываются. Понятия не имею, с чего начать и чего мне не хватает! Единственными событиями являются просмотр страницы, DOM Ready и Window Loaded. Он даже не обнаружит клики на странице.

Рабочие теории:

1) Разве это не работает, потому что это одностраничное приложение, в которое загружается контент?

2) Есть ли конфликтующая библиотека JS? Консоль не выдаёт мне ошибок.

Примечание: я заменил свои коды отслеживания на фальшивые.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 03 июля 2018

Вы используете GTM (Google Tag Manager) и GA на одной странице. На мой взгляд, вам нужно отправить изменения в уровне данных и настроить события на основе изменений уровня данных

...