Как добавить код GTM прямо на веб-страницу? - PullRequest
0 голосов
/ 13 марта 2020

На одном из веб-сайтов, над которым я работаю, мне нужно интегрировать код менеджера тегов Google непосредственно в веб-страницу. Код для отслеживания аудио событий. Я добавил код на веб-страницу, но некоторые переменные не отправляются корректно c

enter image description here.

ниже приведен код для отслеживания событий

(function() {
console.log("function called");
    var divisor = 25;
    var audios_status = {};
    var video_name_array=[];
    function eventHandler(e) {
console.log("called");
        var video_name=(decodeURIComponent(e.target.currentSrc.split('/')[e.target.currentSrc.split('/').length - 1]));
        switch (e.type) {

        case 'timeupdate':
            console.log("timedupdate");
            audios_status[e.target.id].current = Math.round(e.target.currentTime);
            var pct = Math.floor(100 * audios_status[e.target.id].current / e.target.duration);
            for (var j in audios_status[e.target.id]._progress_markers) {
                if (pct >= j && j > audios_status[e.target.id].greatest_marker) {
                    audios_status[e.target.id].greatest_marker = j;
                }
            }

            if (audios_status[e.target.id].greatest_marker && !audios_status[e.target.id]._progress_markers[audios_status[e.target.id].greatest_marker]) {
                audios_status[e.target.id]._progress_markers[audios_status[e.target.id].greatest_marker] = true;
                dataLayer.push({
                    'event': 'audio',
                    'audioplayeraction': audios_status[e.target.id].greatest_marker ,
                    'audioplayerlabel': decodeURIComponent(e.target.currentSrc.split('/')[e.target.currentSrc.split('/').length - 1])
                });
            }
            break;

        case 'play':
        console.log("play");
              if(!video_name_array.includes(video_name))
              {   console.log("in play new");
                video_name_array.push(video_name);
                dataLayer.push({
                    'event': 'audio1',
                    'action': 'audio begin',
                    'label': decodeURIComponent(e.target.currentSrc.split('/')[e.target.currentSrc.split('/').length - 1])
                });
              } else {
                dataLayer.push({
                    'event': 'audio2',
                    'audioplayeraction': 'audio play',
                    'audioplayerlabel': decodeURIComponent(e.target.currentSrc.split('/')[e.target.currentSrc.split('/').length - 1])
                });               
              }     

            break;

        case 'pause':
   console.log("pause");
             if(video_name_array.includes(video_name))
              {
    console.log("in pause");
                dataLayer.push({
                    'event': 'audio3',
                    'audioplayeraction': 'audio pause',
                    'audioplayerlabel': decodeURIComponent(e.target.currentSrc.split('/')[e.target.currentSrc.split('/').length - 1]),
                    'audioValue': audios_status[e.target.id].current
                });
              }
            break;

        case 'ended':
            if(video_name_array.includes(video_name))
              {
              dataLayer.push({
                  'event': 'audio4',
                  'audioplayeraction': 'audio complete',
                  'audioplayerlabel': decodeURIComponent(e.target.currentSrc.split('/')[e.target.currentSrc.split('/').length - 1])
              });
              }
            break;
        default:
            break;
        }
    }

    var audios = document.getElementsByTagName('audio');
console.log(audios );
    for (var i = 0; i < audios.length; i++) {
        var audioTagId;
        if (!audios[i].getAttribute('id')) {
            audioTagId = 'html5_audio_' + Math.random().toString(36).slice(2);
            audios[i].setAttribute('id', audioTagId);
        }
        else {
            audioTagId = audios[i].getAttribute('id');
        }

        audios_status[audioTagId] = {};

        audios_status[audioTagId].greatest_marker = 0;

        audios_status[audioTagId]._progress_markers = {};
        for (j = 0; j < 100; j++) {
            audios_status[audioTagId].progress_point = divisor * Math.floor(j / divisor);
            audios_status[audioTagId]._progress_markers[audios_status[audioTagId].progress_point] = false;
        }

        audios_status[audioTagId].current = 0;

        audios[i].addEventListener("play", eventHandler, false);
        audios[i].addEventListener("pause", eventHandler, false);
        audios[i].addEventListener("ended", eventHandler, false);
        audios[i].addEventListener("timeupdate", eventHandler, false);
    }
})();

Я пытался регистрировать вызываемые функции, но функции отслеживания внутри состояния переключателя не вызывались

1 Ответ

0 голосов
/ 01 апреля 2020

В переменной GTM произошла ошибка с именем переменной. Теперь работает нормально. Спасибо:)

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