How do I make an <audio> file play continuously on all pages?

Yes, it is possible. try this:

<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>

If you really navigate to another page, then you will not get really continuous playback.

There are three common approaches:

  • open your audio player in a popup
  • frames: one main frame for your page to display in, a small frame for the audio player
  • not really navigating to other pages, but do everything with AJAX and thereby not actually reloading the page, but only changing parts of the document structure dynamically; maybe adding real link functionality including changing the address bar by using the HTML5 History API

All approaches have their pros/cons. Popup is maybe the easiest to implement, and has the least drawbacks (compared to frames).

I also am trying to get the volume to decrease after navigating away from my home page.

Then catch any clicks on your “home” link/button, and call the volume method of the audio element with a parameter value ranging from 0 to 1 to set the volume.


well .. a clean and neat way to do it , is the way that soundcloud.com and spoify.com made through ajaxifing all the pages

fix a page and change the pages content through ajax ,and change the url as well to give the user the illusion of navigating this is not the easiest or fastest solution ,but it's the cleanest one ..far away from the fear of browsers incompatibilities