感谢您看我的问题,

我正在尝试使用http://www.tikku.com/jquery-youtube-tubeplayer-plugin#tubeplayer_tutorial_3上的jQuery.tubeplayer.js插件设置自定义事件(分析跟踪)

我可以使插件正常工作并将事件附加到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,如果可能的话,该事件发生的时间。单击标签后,数据将显示在弹出窗口中。

任何帮助是极大的赞赏。

谢谢,

西蒙

最佳答案

每当您想从播放器获取信息时,都应该调用$("#youtube-player-container").tubeplayer("data")。这是为了确保您获得最新信息。

onPlayerX事件中的代码没有任何意义:

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

因为“数据”对象没有引用任何内容。

代替使用“data.currentTime”,使用:
$("#youtube-player-container").tubeplayer("data").currentTime

那应该解决您的问题。

另外,由于您已经设置了使用数据对象的'showTime'和'showVideoURL'函数,因此可以将.tubeplayer("data")对象传递给这些方法,例如:
showTime( $("#youtube-player-container").tubeplayer("data") )
与在定义initPlayer之前如何使用showData相似。

有帮助吗?

10-05 20:29