2

javascriptコードを使用してユーザー指定の開始時刻でオーディオを再生しています

var audio_player = document.getElementById("audi");
//'audi' is ID of audio tag  
audio_player.currentTime = audi_start_time;
//Start time from where audio should start to play

audio_player.play();

Webサイトを実行すると、「audi_start_time」で指定された時間からオーディオを再生できますが、ほとんどの場合、エラーが発生します。

'使用できない、または使用できなくなったオブジェクトを使用しようとしました
[Break On This Error]

audio_player.currentTime = audi_start_time;

どんな助けでもいただければ幸いです。前もって感謝します

4

2 に答える 2

2

currentTimeドキュメントの準備が整う前に設定しようとしていると思いますが、

window.onlaload で currentTime を設定すると機能するためです。

これがあなたがやろうとしていることです - > jsFiddle demo-1 (動作していません)

これがあなたがすべきことです - > jsFiddle demo-2 ( working )


編集:

はい、分かりました。動的に追加されたオーディオ/ビデオ タグを設定しようとしている場合はcurrentTime、オーディオ タグが再生可能になるまで待つ必要があります。

したがって、 oncanplay eventで検出できます。

例えば、

<div id="content"></div>
<button onclick="play()">play</button>

<script type="text/javascript">
function play() {
     var audio = document.createElement("audio");
     audio.controls = "controls";
     audio.innerHTML = '<source src="http://www.w3schools.com/html5/song.ogg" type="audio/ogg" />'+
                       '<source src="http://www.w3schools.com/html5/song.mp3" type="audio/mp3" />';
     var content = document.getElementById("content");
     content.innerHTML = "";
     content.appendChild(audio);
     audio.addEventListener("canplay", function() {
        this.currentTime = 5;        
     },true);
     audio.play();
}
</script>​

そして、ここに動作中のjsFiddleデモがあります

于 2012-04-09T10:13:18.667 に答える
0

現在の時刻を設定する前にオーディオを再生します。私はこれについて一晩中机の上で頭を悩ませていましたが、次のスレッドを見つけました: https://github.com/johndyer/mediaelement/issues/243 . これは私のために働いた:

audioplayer.src = source;
audioplayer.play();
audioplayer.addEventListener('playing', function () {
    if (loadPlayed == false)
    {
        audioplayer.currentTime = Time;
        audioplayer.play();
        loadPlayed = true;
    }
    else {
        audioplayer.removeEventListener('playing', this);
    }
}); 
于 2015-03-30T03:41:32.270 に答える