前提・実現したいこと
ブラウザでJSを使って、オーディオを扱っています。
そこで、以下のコードを書いたのですが、問題が発生しています。
該当のソースコード
JavaScript
1audio.play(); 2 3audio.addEventListener('timeupdate', function() { 4 if (audio.currentTime < second) { 5 audio.currentTime = second; 6 } 7});
発生している問題
①オーディオが再生される
②timeupdate
イベントが発生する
③addEventListener
が呼び出される
④audio.currentTime < second
がtrue
になる
⑤audio.currentTime = second;
が実行され、timeupdate
イベントが発生する
⑥addEventListener
が呼び出される
⑦audio.currentTime < second
がfalse
になる
⑧audio.currentTime = second;
が実行されず、timeupdate
イベントは発生しない
⑨addEventListener
は呼び出されない
となるのが筋だと思うのですが、
⑦がtrue
になり続け、④〜⑥が無限ループしてしまいます。
なぜこの問題が発生しているのかわかりません。
原因と解決方法を教えてください。
お願いします。
試したこと
setInterval
で常に監視する方法も考えましたが、
そうじゃない感がすごいので実装はしていません。
発生したイベントを無効化する方法も考えましたが、
有効な手段には辿り着いていません。

回答3件
あなたの回答
tips
プレビュー