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


How can I track a click event of an embedded video (youtube, vimeo, etc.)? (to track play count)

是否有一种方法可以跟踪嵌入式视频的播放计数?理想情况下,无需使用缩略图链接来启动嵌入/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 width="480" height="390" 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" width="400" height="225" 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" width="440" height="248" 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>

如何跟踪这些视频的播放计数?

Ryan,要做到这一点,唯一的方法是使用视频分享网站的播放器api,因为html和javascript没有原生支持。

要为youtube视频做这个,你可以查看这里的文档

对于vimeo视频,您可以查看这里的文档

这适用于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'");
}
});