6

HTML5 の癖、またはVideo.jsに固​​有のものとして確認したい小さな矛盾に気付きました。

currentTime()新しい時間を提供しながらVideo.js の関数を呼び出すと、(現在の時間を取得するために) をさらに呼び出すと、イベントが発生currentTime()するまで正しい時間が返されないようです (前の時間が返されます) 。イベントtimeupdate終了後、正しい時刻を返します。timeupdatecurrentTime()

たとえば、ビデオの再生はまだ開始されていませんが、Video.js がロードされ、すべてのビデオ メタなどが読み込まれているとします。

videoPlayer.addEvent('timeupdate', function() {
    console.log('Event callback: ' + player.currentTime); 
});
console.log('Original time: ' + player.currentTime);  
player.currentTime(100);          
console.log('New time: ' + player.currentTime);  

私が期待していた出力は次のようになります。

Original time: 0
New time: 100
Event callback: 100

しかし、私が受け取ったものは次のとおりです。

Original time: 0
New time: 0
Event callback: 100

どんな洞察も素晴らしいでしょう!

編集: OSX の Chrome と Safari ではこれを再現できますが、OSX の Firefox では再現できません (すべて HTML5 を使用)。Flash プレーヤーを使用して IE8 で、HTML5 プレーヤーを使用して IE9 でこれを再現することもできます。

4

1 に答える 1

2

他のいくつかの html5/flash プレーヤーで同様の動作を見てきました。

via をシークした後でも、再生ヘッドは次のイベントcurrentTime(100);まで更新されないという前提を常に持っていました。timeupdate

于 2013-05-15T12:27:21.293 に答える