23

すべてのページでオーディオ ファイルを「連続的に」再生する方法を知りたいです。そのため、オーディオ ファイルが 20 秒間再生された場合、別のページに移動すると、中断したところから続行されます。また、ホームページから移動した後、音量を下げようとしています。ヒントやアドバイスをいただければ幸いです。ありがとう=D

<audio src="songforsite.mp3" loop="true" autoplay="true" controls>
Unsupported in Firefox
</audio>
4

3 に答える 3

24

はい、可能です。これを試して:

<audio preload="auto" src="a.mp3" loop="true" autobuffer>
Unsupported in Firefox
</audio>

<script>

function setCookie(c_name,value,exdays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      }
}

var song = document.getElementsByTagName('audio')[0];
var played = false;
var tillPlayed = getCookie('timePlayed');
function update()
{
    if(!played){
        if(tillPlayed){
        song.currentTime = tillPlayed;
        song.play();
        played = true;
        }
        else {
                song.play();
                played = true;
        }
    }

    else {
    setCookie('timePlayed', song.currentTime);
    }
}
setInterval(update,1000);
</script>
于 2013-03-25T11:26:31.323 に答える
15

実際に別のページに移動すると、連続再生はできません。

次の 3 つの一般的なアプローチがあります。

  • ポップアップでオーディオ プレーヤーを開く
  • フレーム: ページを表示する 1 つのメイン フレームと、オーディオ プレーヤー用の小さなフレーム
  • 実際には他のページに移動するのではなく、AJAX を使用してすべてを実行するため、実際にページをリロードするのではなく、ドキュメント構造の一部を動的に変更するだけです。HTML5 History API を使用してアドレスバーを変更するなど、実際のリンク機能を追加するかもしれません

すべてのアプローチには長所と短所があります。ポップアップはおそらく実装が最も簡単で、(フレームと比較して) 欠点が最も少ないです。

また、ホームページから移動した後、音量を下げようとしています。

次に、「ホーム」リンク/ボタンのクリックをキャッチし、0 から 1 の範囲のパラメーター値で要素のvolumeメソッドを呼び出して音量を設定します。audio

于 2013-03-25T10:46:35.957 に答える