0
イベントラベルのためにページの複数のiframeからgetvideourlを取得する必要がありますが、それは2番目ではなく最初のiframeでのみ動作します。私が使用しているコードは以下の通りです。私は各機能のために使用しようとしましたが、運はありません。youtubeからgetvideourl複数のiframeのイベントラベル
try {
var checkYoutubeIframe = false;
//Verify all iFrames from the page
$("iframe").each(function() {
//Check if you a YT iFrame
if ($(this).attr('src').indexOf("youtube.com/embed") >= 0) {
checkYoutubeIframe = true;
//Add the YT ID
if ($(this).attr('id') == undefined ||$(this).attr('id').indexOf("youTubePlayer2") == -1) {
$(this).attr('id', 'youTubePlayer2')
}
//Add Enable JS API parameter
if ($(this).attr('src').indexOf("enablejsapi=1") == -1) {
if ($(this).attr('src').indexOf("?") >= 0) {
var src = $(this).attr('src') + "&enablejsapi=1"
$(this).attr('src', src)
} else {
var src = $(this).attr('src') + "?enablejsapi=1"
$(this).attr('src', src)
}
}
}
})
//Call logic if there is an iFrame on the page
if (checkYoutubeIframe) {
//Include YT API
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
//Call the YT Tracker Function
function onYouTubeIframeAPIReady(event) {
player = new YT.Player('youTubePlayer2', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {}
//Tracker
function onPlayerStateChange(event) {
var label = player.getVideoUrl();
// track when user clicks to Play
if (event.data == YT.PlayerState.PLAYING) {
ga('send', 'event', 'Engagement', 'Play', label);
}
// track when user clicks to Pause
if (event.data == YT.PlayerState.PAUSED) {
ga('send', 'event', 'Engagement', 'Pause', label);
}
// track when user clicks to Pause
if (event.data == YT.PlayerState.ENDED) {
ga('send', 'event', 'Engagement', 'Watch to End', label);
}
}
}
} catch (e) {}