1

さて、私はこれと同じくらい簡単なものを持っています:

<audio autoplay='autoplay' loop='loop' id='audio' controls>
  <source src='http://www.w3schools.com/html/horse.ogg'/>
  <source src='http://www.w3schools.com/html/horse.mp3'/>
</audio>

今、iOSデバイスでオーディオを再生すると、ループは正常に行われますがブラウザウィンドウを閉じるか、タブを切り替えると、ループし続け、一時停止する唯一の方法は、ブラウザタブを閉じることです. を削除して JavaScript でloop='loop'再生してみましたが、うまくいきましたが、約 1.5 分のオーディオでは、まだかなり煩わしい場合があります。しかし、ブラウザが開いていなくてもイベントが発生するため、それも機能しませんでした。onendedended

オンラインで見つけた最初のサウンドのデモpauseですが、実際のサウンドはかなり長いので、ブラウザー ウィンドウを閉じたときに必要になります。

私はそれを一時停止しようとonbluronunloadましonbeforeunloadたが、役に立ちませんでした。バックグラウンドでのオーディオの再生を停止する方法はありますか?

4

1 に答える 1

3

解決策を見つけることができました:

ループを使用して、ユーザーが Web ページにいるかどうかを確認します。時刻を保存します。

var lastSeen;
var loop = function (){
    lastSeen = Date.now();
    setTimeout(loop, 50);
};
loop();

var music = document.getElementById('music');
music.addEventListener('timeupdate', function (){
    if(Date.now() - lastSeen > 100){
        this.pause();
    }
}, false);

それは私のファイルがどのように見えるかです。timeupdateイベントは再生中のオーディオ要素で継続的に発生するため、ループが最後にいつ呼び出されたかを確認するだけで済みます。100 ミリ秒以上前に呼び出された場合は、音楽を一時停止します。私がテストしたiPadでは、魔法のように機能しました。

于 2013-01-21T12:06:07.930 に答える