2017-06-13 9 views
2

似たような質問が掲載されていますが、私の場合は役に立たなかった。ここでplayer.getDuration()およびplayer.getCurrentTime()は関数エラーではありませんか?

は私のYouTube iframeです:

<iframe id="myframe" style="border: solid 4px #37474F; "> 
</iframe> 

私は動的にsrc属性を追加しました。ここで

は私のプレーヤーであり、

var player; 

function onYouTubeIframeAPIReady() { 
    player = new YT.Player('myframe', { 

    events: { 
     'onReady': onPlayerReady, 
     'onStateChange': onPlayerStateChange 
    } 
    }); 
} 

私はplayer.getCurrentTime();player.getDuration();を行うにしようとしていますが、両方が「機能定義されていません」というエラーを与えておきます。

+0

[YouTube Player API:getDuration()、getCurrentTime()、getVideoData()not working](https://stackoverflow.com/questions/32001561/youtube-player-api-getduration-getcurrenttime- getvideodata-not-working)// [ロードされた/キューに入れられたビデオの再生時間を取得する方法](https://stackoverflow.com/questions/2086260/youtube-player-api-how-to-get-durationロードされたキューに入れられたビデオは再生されないi) –

答えて

1

YouTubeプレーヤーAPIは、コンストラクタにはありませんが、後で(ビデオが読み込まれたときに)player.getCurrentTimeに設定されています。おそらく、これはバグです。

これが本当であることを確認するには、それぞれの呼び出しの前にconsole.log(player.getCurrentTime)を追加します。これは最初にundefinedであり、その後は関数に変わります。

player.getCurrentTimeが存在するかどうかをテストして回避してください。そうでなければ、戻り値は0.0とします。例:

var videoPos = !player.getCurrentTime ? 0.0 : player.getCurrentTime(); 

getDurationと同じ問題が発生しているようです。

関連する問題