我正在寻找一种从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");
}
但它不起作用?
答案 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 -->