如何跟踪嵌入视频(youtube、vimeo 等)的点击事件? (跟踪播放次数)

Posted

技术标签:

【中文标题】如何跟踪嵌入视频(youtube、vimeo 等)的点击事件? (跟踪播放次数)【英文标题】:How can I track a click event of an embedded video (youtube, vimeo, etc.)? (to track play count) 【发布时间】:2011-11-07 19:18:13 【问题描述】:

有没有办法跟踪嵌入式视频的播放次数?理想情况下,无需借助链接来启动嵌入/iframe 代码的缩略图。

示例(在jsFiddle 上亲自尝试):

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Example</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="log"></div>
    <ul>
        <li class="video" id="video1"><iframe   src="http://www.youtube.com/embed/z6lL83wl31E" frameborder="0" allowfullscreen></iframe><li>
        <li class="video" id="video2"><iframe src="http://player.vimeo.com/video/28231570?title=0&amp;byline=0&amp;portrait=0"   frameborder="0"></iframe></li>
        <li class="video" id="video3"><embed flashVars="playerVars=autoPlay=no" src="http://www.metacafe.com/fplayer/3153323/the_three_stooges_minisode_beer_barrel_polecats_season_1_episode_0008.swf"   wmode="transparent" allowFullScreen="true" allowScriptAccess="always" name="Metacafe_3153323" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></li>
    </ul>
    <script>
        /* Here's what I've tried so far: */
        $('.video').mouseover(function()
            $('#log').html('Mouseover!');
            /*alert('Track mouseovers instead? Is this the best I can do?');*/
        );
        $('.video').mouseout(function()
            $('#log').html('&nbsp;');
        );
        $('.video').mousedown(function()
            $('#log').html('Mousedown!');
            alert('mousedown');
            /* This will track mousedown events in embed objects (not iframes), but not allow the click event to pass through to object. */
        );
    </script>
</body>
</html>

如何跟踪每个视频的播放次数?

【问题讨论】:

【参考方案1】:

这适用于 Vimeo... 在“播放”事件上触发 javascript 警报,但还有许多其他事件,如“完成”、“暂停”、“播放进度”(在视频播放时不断更新)。 . 使用 Jquery

$(document).ready( function () 

var f = $('iframe'),
    url = f.attr('src').split('?')[0],
    status = $('.status');

// Listen for messages from the player
if (window.addEventListener)
    window.addEventListener('message', onMessageReceived, false);

else 
    window.attachEvent('onmessage', onMessageReceived, false);


// Handle messages received from the player
function onMessageReceived(e) 
    var data = JSON.parse(e.data);

    switch (data.event) 
        case 'ready':
            onReady();
            break;

        case 'play':
            onPlay();
            break;

    


// Call the API when a button is pressed
$('button').on('click', function() 
    post($(this).text().toLowerCase());
);

// Helper function for sending a message to the player
function post(action, value) 
    var data =  method: action ;

    if (value) 
        data.value = value;
    

    f[0].contentWindow.postMessage(JSON.stringify(data), url);


function onReady() 
    status.text('ready');
    post('addEventListener', 'play');


function onPlay() 
        alert("Dude done clicked 'Play'");


);

【讨论】:

【参考方案2】:

Ryan,这样做的唯一方法是使用视频共享网站的播放器 API,因为 html 和 javascript 对此没有原生支持。

要为 youtube 视频执行此操作,您可以查看文档 here

要为 vimeo 视频执行此操作,您可以查看文档 here

【讨论】:

以上是关于如何跟踪嵌入视频(youtube、vimeo 等)的点击事件? (跟踪播放次数)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php 获取 youtube 和 vimeo 嵌入代码的视频缩略图?

如何将占位符图像添加到嵌入的 Vimeo 和 Youtube 视频中?

如何在 ruby​​ on rails 中显示 vimeo 和 youtube 嵌入链接的缩略图?

嵌入具有正确纵横比的 Youtube/Vimeo 视频

使用自定义字段从 Youtube 或 Vimeo 嵌入背景视频

是否可以使用 C# Markdown 库在 Markdown 中嵌入 Youtube/Vimeo 视频