2016-12-23 70 views
0

我有一些代碼,我得到的當前時間和持續時間,但是這兩個時間似乎是錯誤的,持續時間比普通視頻更長,當前時間似乎太快,它也永遠不會達到總持續時間量並稍微停止。JS - Youtube Iframe API返回錯誤的當前時間和持續時間?

代碼:

<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

要顯示十進制表示,實際的十進制表示? – Viney

回答

1

看着/ 60.0000我想你想找到多少分鐘已經過去了。問題與你的實現是toFixed每一次都被四捨五入,因爲getCurrentTime()返回有小數部分的值不多於5大部分時間它像x.9xxxx修復嘗試Math.floor()和計算分秒分別

這裏是你可以用它來顯示分:秒

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'; 

在早期的片段

相關問題