12

jQuery で HTML5 ビデオ タグを取得する際に問題があります。これが私のコードです:

HTML コード:

<video id="vid" height="400" width="550">
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogv" type="video/ogg">
</video>

Javascript コード:

function playVid(){
    console.log($('#vid'));
    console.log($('#vid')[0]);
    $('#vid')[0].currentTime=5;
    $('#vid')[0].play()
}

$(document).ready(){
    playVid();
}

.currentTimeコードは、次のエラーのある行で中断されます。

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

ここに私が理解できないビットがあります-最初console.logは私が期待するオブジェクトを示しています.このオブジェクトの内部には別のオブジェクトが呼び出され0、これは.currentTime.

ただし、2 番目のログを実行するとすぐに$('#vid')[0]、ビデオ タグの HTML コードが表示されます。後で呼び出されたオブジェクトではありません0console.log($('#vid')["0"])とについてまったく同じ結果が得られconsole.log($('#vid').get(0))ます。

jQueryで動作する、0返されたオブジェクトで呼び出されたオブジェクトを取得する方法はありますか?$('#vid')

4

7 に答える 7

9

準備が整う前にビデオ要素とやり取りしようとしていると思います。

次のようなことを試してください:

function loadStart(event)
{
    video.currentTime = 1.0;
}

function init()
{
    video.addEventListener('loadedmetadata', loadStart, false);
}
document.addEventListener("DOMContentLoaded", init, false);

ソース: HTML5 ビデオ - Chrome - エラー設定 currentTime

于 2012-06-27T16:46:13.013 に答える
6

私はまったく同じ問題を抱えています(オーディオに関して)。主にjqueryソリューションではないため、受け入れられた回答が問題を解決または説明するとはまったく思わない。

奇妙なことに、currentTimeプロパティを取得できます。また、currentTimeを設定する前にサウンドがすでに再生されていることを確認でき、同じエラーが発生するため、これはメディアとは関係がないと思います。準備'。

var a = $("#myaudio").get(0); // a html5 audio element
console.log(a)                // dumps the object reference in the console
console.log(a.currentTime);   // works fine, logs correct value
a.currentTime = 100           // fails with an InvalidStateError

回避策は、setTimeoutを使用することです

setTimeout(function(){
            a.currentTime = 0;
        },1);

...しかし、なぜ失敗しているのか理解したいと思います!

于 2012-10-22T10:04:31.120 に答える
6
var a_video = $('#video_id');

a_video.on('loadeddata', function() {
  if(a_video.readyState != 0) {
    a_video[0].currentTime = 100;
  } else {
    a_video.on('loadedmetadata', function() {
      a_video[0].currentTime = 100;
    });
  }
});
于 2013-01-14T14:10:25.813 に答える
3
function playVid(){
  $('#vid').get(0).currentTime=5;
  $('#vid').get(0).play()
}

$(window).load(function(){
  playVid();
});

これはjsfiddleの例です。

于 2012-06-27T16:48:22.490 に答える