3

JavaScriptでhtml5ビデオを制御しようとしています。私が欲しいのは、ユーザーがボタンをクリックすると、ビデオが別のフレームにジャンプし、そこから再生し続けることです。私の現在のコードでは、再生は常にシーク後に停止します。

function jumpToTime(){
    var video = $("video")[0];
    video.currentTime = 160;
    document.getElementbyId("videoclip").play(); //not working
};

//the following code is probably not really related to the question:
var endtimeoffset = 2000;

video.addEventListener("timeupdate", function() {
    if (video.currentTime >= endtimeoffset) {
        video.pause();
    }
}, false);
4

3 に答える 3

2

同様の問題に遭遇し、ビデオを一時停止してから currentTime を設定し、ビデオを再生することで解決策を見つけました。コードを更新するには:

function jumpToTime(){
    var video = $("video")[0];
    video.pause();
    video.currentTime = 160;
    video.play();
};
于 2014-06-24T21:54:20.297 に答える
1

私が試すいくつかのこと:

  1. jumpToTime() 関数では、おそらく同じビデオへの 2 つの異なる参照があります (1 つは jQuery によって取得され、もう 1 つは getElementById() によって取得されます)。これらは同じビデオを参照していますか? 安全のために、 currentTime を設定した「ビデオ」参照で play() を呼び出すだけです。
  2. これが実際のコードにあるとコンソールが文句を言うので、これはおそらくコピー アンド ペーストの問題ですが、getElementById() のスペルを間違えました (B を大文字にする必要があります)。
  3. デバッグの目的で、「timeupdate」イベント コードをコメント アウトして、これが問題ではなく、タイムヘッドを更新したり再生を呼び出したりした後に、このコードがビデオを一時停止していないことを確認します。現在の時間を比較対象のオフセットよりもはるかに小さく設定しているため、おそらくそうではありません。ただし、問題の考えられる原因としてこれを排除するのは簡単なテストです。
于 2012-05-25T14:05:23.230 に答える
0
function jumpToTime(){
   document.getElementById("videoclip").currentTime = 160;
   document.getElementById("videoclip").play(); //not working
};

getElementbyId --> getElementById -- b --> B

IDで直接オブジェクトを取得...

于 2012-05-25T14:26:40.927 に答える