私のページには html5 オーディオ プレーヤーの複数のインスタンスがあり、再生する曲を決定するために jQuery fadeIn() fadeOut() を使用しています。別のページへのリンクをクリックすると、現在再生中のサウンドがフェードアウトし、停止し、進行状況を 0 秒にリセットすると、ページが (オーディオ プレーヤーと共に) フェードアウトし、新しいページがフェードインします。音量をフェードアウトできますが、何らかの理由でタイマーを 0 秒にリセットできません。
<script>
$('.link').on('click', function(e){
$('audio').currentTime = 0; /*reset timer*/
displayNone(); /*fade out current page*/
$(this.getAttribute("href")).fadeIn(); /*fade in target page*/
stopAudio();
});
function displayNone() {
$('.pagecontainer>div').fadeOut();
}
function stopAudio() { //fade out any current audio
$('audio').animate({volume: 0}, 1000);
setTimeout(function(){('audio').pause()},1000) /*stop audio after fading out volume*/
}
$('.sound').on('play', function () {
$('audio').animate({volume: 1}, 100); /*reset volume to 100% after clicking play button on player*/
});
</script>
....
....
<a href="page1" class="link">page 1</a>
<a href="page2" class="link">page 2</a>
<a href="page3" class="link">page 3</a>
<div class="pagecontainer">
<div id="page1">
<audio controls class="sound">
<source src="music1.mp3"/>
<source src="music1.ogg"/>
</audio>
</div>
<div id="page2">
<audio controls class="sound">
<source src="music2.mp3"/>
<source src="music2.ogg"/>
</audio>
</div>
<div id="page3">
<audio controls class="sound">
<source src="music3.mp3"/>
<source src="music3.ogg"/>
</audio>
</div>
</div>
例えば:
現在、ページ 1 にいて、music1.mp3 を 10 秒間再生しています
music1.mp3 を停止せずに page2 へのリンクをクリックすると、music1.mp3 の音量が page1 と共にフェードアウトし、page2 が music2.mp3 の音楽プレーヤーと共に正常にフェードインします。
10秒後、ページ1のリンクをクリックしてページ1に戻ります
music1.mp3 のプレーヤーはまだ再生中で (進行状況は 20 秒)、停止していませんが、ボリュームはゼロになっています。
music1.mp3 がタイマーを 0 秒にリセットせず、完全に停止しない理由がわかりません。
ありがとう!