Google Tag Manager API Target Youtube видео в (нескольких) существующих фреймах - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть сайт, на котором открывается оверлей и загружается JavaScript для Менеджера тегов Google, но пока нет видео с YouTube.Когда пользователь нажимает кнопку (class = .flower-leaf или .list-leaf), видео YouTube, которое мы хотим отслеживать с помощью GTM, появляется на странице через iframe.

На прошлой неделе я наткнулся на эту проблему, когда мне захотелось использовать YouTubeAPI, чтобы дать мне событие, когда видео перестало воспроизводиться: Целевой (несколько) API-интерфейсов YouTube API (несколько)

Теперь я хочу что-то подобное, но не совсем, потому что вместо того, чтобы запускать пользовательские функции для событий onReady и onStateChange, я просто хочу, чтобы скрипт GTM реагировал на эти события.Теперь мои знания JavaScript не являются экспертами, поэтому я могу упустить что-то очевидное здесь, но как мне убедиться, что функции сценария GTM будут запущены в этих событиях?С моим текущим кодом я получаю сообщение о том, что onPlayerReady не определено.Это, очевидно, только смотрит в рамки моего собственного сценария, но я хочу вызвать функцию GTM.Как бы я пошел об этом?

// This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onYouTubePlayerAPIReady() {
  $(".flower-leaf").click(function () {
    interval = setInterval(myTimer, 1000);
  });
  $(".list-leaf").click(function () {
    interval = setInterval(myTimer, 1000);
  });
}

var interval;
var player;

function myTimer() {
  myStopFunction();
  addEventListeners();
}

function myStopFunction() {
  clearInterval(interval);
}

function addEventListeners() {
  $(".flower-leaf").each(function () {
    var identifier = 'youtubeplayer';
    player = new YT.Player(identifier, {
      events: {
        "onReady": onPlayerReady,
        "onStateChange": onPlayerStateChange,
      }
    });
  });
  $(".list-leaf").each(function () {
    var identifier = 'youtubeplayer';
    player = new YT.Player(identifier, {
      events: {
        "onReady": onPlayerReady,
        "onStateChange": onPlayerStateChange,
      }
    });
  });
}

Я думаю, важно упомянуть, что я использую стандартный триггер YouTube-видео в моей настройке GTM (на tagmanager.google.com)

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