2016-09-11 6 views
1

HTML5オーディオエレメントのオフセット時間を変更する必要があります。 canplayイベントを処理し、currentTime属性を変更する関数を記述しました。html5 audio:currentTimeを変更すると複数のcanplayイベントが発生する

しかし、currentTime属性を変更するとイベントが発生し、ループするように見えます。私がcurrentTimeの変更をコメントアウトすると、それは正常に機能します(つまり、イベントは1回のみ発生します)。

これを行う適切な方法は何ですか?この現象は、(少なくとも)FirefoxとChromeで発生します。その結果、音楽が正常に

<audio id="current" src="http://www.music.helsinki.fi/tmt/opetus/uusmedia/esim/a2002011001-e02.wav" controls 
start="1000" end="2000">  
</audio> 
<script> 

$('audio').bind('canplay', function(event) { 
    alert("fire!"); 
    event.target.currentTime = 0.5; 
}); 
</script> 

can check it on jsfiddle, too

再生されない場合、実際には、あなたより良く、より多くのブラウザ

+1

あなたは変更できます'.bind'を' .one'にする - それは一度だけ起動します。 – naortor

+0

@naortorありがとうございます!それは今働く – gisly

答えて

1

と互換性があり、loadedmetadataイベントで動作するようだが、誰もがcanplayを示唆します.bindの代わりに.oneを使用して初めて初めて聞くことができます

$('audio').one('canplay', function(event) { 
    console.log("fire!"); 
    event.target.currentTime = 0.5; 
}); 
関連する問題