いくつかのこと...スクリプトは最初にオーディオタグの後にある必要があります。
oncanplaythough
また、これを処理するために JavaScript を使用しているため、audio タグの属性は必要ありません。
また、メソッドではなくoncanplaythrough
イベントです。代わりに を使用するリスナーを追加しましょうcanplaythough
。これを見てください:
<audio id="audio2"
preload="auto"
src="http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg" >
<p>Your browser does not support the audio element</p>
</audio>
<script>
myAudio=document.getElementById('audio2');
myAudio.addEventListener('canplaythrough', function() {
this.currentTime = 12;
this.play();
});
</script>
最後に、特定のポイントで曲を開始するには、currentTime
実際にファイルを再生する前に設定するだけです。ここでは 12 秒に設定しているため、この例では聞こえるようになっています。3:26 の場合は 206 (秒) を使用します。
ライブデモをチェックしてください: http://jsfiddle.net/mNPCP/4/
EDIT : Firefox 以外のcurrentTime
ブラウザでは不適切に実装されている可能性があります。この報告された W3C バグの解決によると、が設定されている場合は、 イベントとイベントが発生するはずです。これは、この例では、Firefox がオーディオ トラックの最初の 1 秒程度を無期限に再生し、再生を継続しないことを意味します。この簡単な回避策を思いついたので、変更しましょうcurrentTime
canplay
canplaythrough
this.currentTime = 12;
すでに設定されているかどうかをテストして、canplaythrough
繰り返し呼び出されるのを防ぎます。
if(this.currentTime < 12){this.currentTime = 12;}
この仕様の解釈については現在も論争が続いていますが、現時点では、この実装は HTML5 オーディオをサポートする最新のブラウザーのほとんどで動作するはずです。
更新された jsFiddle: http://jsfiddle.net/mNPCP/5/