youtube API函数存在问题

时间:2013-10-03 19:44:07

标签: javascript youtube youtube-api

我正在寻找一种从youtube API获取player.getDuration()player.getCurrentTime()的方法,正常时间写入(分钟:秒)如下所示:

var mind = player.getCurrentTime() /*or player.getDuration()*/  % (60 * 60);
var m = Math.floor(mind / 60);

var secd = mind % 60;
var s = Math.ceil(secd)

document.write(m,":",s); seconds;

但它一直发送错误NaN:NaN

此外,我想在视频使用YT.PlayerState.ENDED功能完成后更改图像:

if(YT.PlayerState.ENDED){
 $("#change").attr('src', "../play button.png");
             }

但它不起作用?

2 个答案:

答案 0 :(得分:1)

确保在加载视频时调用这些功能,否则它将是NaN。只是提醒(player.getCurrentTime());并看看输出是什么。

-

你的if语句是否错误。你正在比较ENDED和没有。请参阅此示例

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
    }
}

答案 1 :(得分:0)

最有可能的玩家没有正确设置。 此外,getCurrentTime()的值在播放期间会发生变化;把代码放在你每秒调用的函数中。 也许使用jquery.min.js来显示值。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script type='text/javascript'>
var player;  // Reference to global player object.

// call the function every 1 second.
setInterval(displTime,1000);  // PUT THIS STATEMENT JUST AFTER THE PLAYER HAS BEEN CREATED. 

function displTime() {
if (! player)
   alert("NO player object !");  // Check if player has been set. 
// player.getCurrentTime() or player.getDuration()
var mind = player.getCurrentTime();   // returns elapsed time in seconds 
var m = Math.floor(mind / 60);
var secd = mind % 60;
var s = Math.ceil(secd)
$("#pt").html(m + ":" + s);  // Using the JQUERY library to write to body
}
     </script>



          <div id="pt"></div>    <!-- Put this in the html BODY to display m:s -->