Плагин JQuery для отслеживания Youtube jQuery.tubeplayer.js - PullRequest
0 голосов
/ 14 декабря 2011

спасибо, что посмотрели на мой вопрос,

Я пытаюсь настроить пользовательские события (отслеживание Google Analytics) с помощью плагина jQuery.tubeplayer.js на http://www.tikku.com/jquery-youtube-tubeplayer-plugin#tubeplayer_tutorial_3

Я могу заставить плагин работать и прикреплять события к onPlayerPlaying, onPlayerPaused, onPlayerEnded и т. Д., Но не могу извлечь данные, которые я хочу передать событию.Я хочу извлечь URL видео и время видео, когда событие инициируется.Эти данные можно извлечь из видео, используя showData (jQuery ('# youtube-player-container'). Tubeplayer ('data'));функции в примере, я не могу получить эти данные в моем событии.

Мой код выглядит следующим образом:

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type='text/javascript' src='js/jQuery.tubeplayer.js'></script>
</head>
<body>
<div id='youtube-player-container'> </div>

 <a onClick="showData(jQuery('#youtube-player-container').tubeplayer('data'));" href="javascript:void(0);">Click here to see data</a>
 <div class="EventListener">The is the initial event listener text</div>
 <a onClick="showVideoURL(jQuery('#youtube-player-container').tubeplayer('data'));">Click to see the URL of the video</a><br/>
 <span class="VideoURL"></span><br/>
<div class="Bufferstatus">The is Buffertext</div>
 <a onClick="showTime(jQuery('#youtube-player-container').tubeplayer('data'));">Click to see the time of the video</a><br/>
<span class="currentTime"></span><br/>
<script>VideoID="i3AqF9e8WV4"</script>
<script src="js/jQuery.tubeplayer.settings.js"></script>

с настройками сценария tubeplayer на

var url=location.href;


jQuery.tubeplayer.defaults.afterReady = function(){
//jQuery("#player").tubeplayer("cue", " ");
};
initPlayer();
function showData(data){
var html = "bytesLoaded : " + data.bytesLoaded;
html += " / bytesTotal : " + data.bytesTotal + "\n";
html += "currentTime : " + data.currentTime;
html += " / duration : " + data.duration + "\n";
html += "startBytes : " + data.startBytes + "\n";
html += "state : " + data.state + "\n";
html += "quality : " + data.availableQualityLevels.join(",") + "\n";
html += "url : " + data.videoURL + "\n";
html += "videoID : " + data.videoID;
alert(html);
}



function showTime(data){
$('.currentTime').text('The time when clicked was:' + data.currentTime);
}

 function showVideoURL(data){
$('.VideoURL').text('The video URL is:' + data.videoURL);
 }


showData(jQuery('#youtube-player-container').tubeplayer('data'));

function initPlayer(){
jQuery("#youtube-player-container").tubeplayer({
    initialVideo: VideoID,
    width: 600,
    height: 450,
    onPlayerPlaying: function(){$('.EventListener').text('The video is played at'   + data.currentTime);},      
    onPlayerPaused: function(){$('.EventListener').text('The video is paused at' + data.currentTime);},
    onPlayerEnded: function(){$('.EventListener').text('The video ended');},
    onPlayerBuffering: function(){$('.Bufferstatus').text('The video is buffering');},
    modestbranding: false,
    showControls: 1,
    onQualityChange: function(quality){$('.qualityCheck').text('The quality of the video is: ' +quality);}
});


};

Конкретные данные, такие как URL видео, время вкакое событие произошло, если это возможно.Данные отображаются во всплывающем окне при нажатии на теги.

Любая помощь с благодарностью.

Спасибо,

Саймон

1 Ответ

2 голосов
/ 14 декабря 2011

Вы должны вызывать $("#youtube-player-container").tubeplayer("data") каждый раз, когда хотите получить информацию от игрока.Это сделано для того, чтобы вы получали самую свежую информацию.

Код внутри событий onPlayerX не имеет никакого смысла:

$('.EventListener').text('The video is played at'   + data.currentTime);

, поскольку объект 'data' не имеетне ссылайтесь ни на что.

Вместо использования «data.currentTime» используйте:

$("#youtube-player-container").tubeplayer("data").currentTime

, и это должно решить вашу проблему.

В качестве альтернативывы настроили функции 'showTime' и 'showVideoURL', которые принимают объект данных, вы можете передать объект .tubeplayer("data") в эти методы, например:

showTime( $("#youtube-player-container").tubeplayer("data") )

аналогично тому, какshowData используется до определения initPlayer.

Помогает ли это?

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