我有一些代码用于获取当前时间和持续时间,但两次都显示错误,持续时间比常规视频长,当前时间似乎太快,也从未达到总持续时间金额并稍稍停止。
代码:
<script type="text/javascript">
var tag = document.createElement('script');
tag.id = 'iframe-demo';
tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady(event) {
player = new YT.Player('existing-iframe-example', {
events: { // Setup the events to use
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
function onPlayerReady(event) {
event.target.playVideo(); // Auto play the video when ready
}
var myTimer;
function onPlayerStateChange(event){
if(event.data==1) { // playing
myTimer = setInterval(function(){
document.getElementById("time").innerHTML = (player.getCurrentTime() / 60.0000).toFixed(2);
document.getElementById("duration").innerHTML = (player.getDuration() / 60.0000).toFixed(2);
}, 100); // 100 means repeat in 100 ms
}
else { // not playing
clearInterval(myTimer);
}
}
}
</script>
如何解决这个问题?
答案 0 :(得分:1)
查看/ 60.0000
我想你想知道已经过了多少分钟。实施的问题是toFixed
每次都会四舍五入,因为getCurrentTime()
会返回一个值小部分更多的是5大部分时间它像x.9xxxx一样来修复try Math.floor()
并分别计算分和秒
您可以使用以下内容显示min:sec
myTimer = setInterval(function(){
var currentTime = player.getCurrentTime();
var minutes = Math.floor(currentTime / 60) < 10 ? '0' + Math.floor(currentTime / 60.000) : Math.floor(currentTime / 60.000);
var seconds = Math.floor(currentTime % 60) < 10 ? '0' + Math.floor(currentTime % 60.000) : Math.floor(currentTime % 60.000);
document.getElementById("time").innerText = minutes + ' min : '+ seconds+ ' sec';
}, 100); // 100 means repeat in 100 ms
你应该注意,十进制表示法中的100秒将是1.40(1分40秒),但在实际的十进制表示中它将是 1.66因为在真正的十二月。表示59不会在+1时赢得1.00但仅在99之后。如果你需要实际的dec。表示更改此部分
document.getElementById("time").innerText = minutes + ' min : '+ seconds+ ' sec';
到
document.getElementById("time").innerText = minutes + ' min : '+( (seconds/60)*100) + ' sec';
在早期的代码段
中