title: Preloading HTML5 Audio in Mobile Safari
body: <p>I'm having a problem preloading HTML5 audio content and then using what I have in cache rather than attempting to redownload the audio every time I try to replay it.</p>
  
  <p><a href="http://cs.sandbox.millennialmedia.com/~tkirchner/rich/K/kungFuPanda2_tj/">http://cs.sandbox.millennialmedia.com/~tkirchner/rich/K/kungFuPanda2_tj/</a></p>
  
  <p>The experience is suppose to be that when someone clicks on the banner, it pops up an ad with a loading bar.  THe loading bar is loading all the images necessary for the animation.  In the meantime, the audio is also getting loaded via audio tags already on in the DOM (which is fine).  After all the images are loaded, the loading bar disappears and the user can continue on.  There are 4 buttons on the bottom of the screen that they can click.  Clicking one of them plays the audio file and images do a flipbook-style animation thats synced to the audio.</p>
  
  <p>Audio Tags:</p>
  
  <pre><code>&lt;audio id="mmviperTrack" src='tigress.mp3'&gt;&lt;/audio&gt;
  &lt;audio id="mmmantisTrack" src='viper.mp3'&gt;&lt;/audio&gt;
  &lt;audio id="mmtigressTrack" src='kungfu3.mp3'&gt;&lt;/audio&gt;
  &lt;audio id="mmcraneTrack" src='crane.wav'&gt;&lt;/audio&gt;
  </code></pre>
  
  <p><strong>Play Button Event Listeners:</strong></p>
  
  <pre><code>button.addEventListener('click',function(){
      if ( f.playing ) return false;
      f.playing = true;
      button.audio.play();
  },false);
  
  button.audio.addEventListener('playing', function(){
      animate();
  }, false);
  </code></pre>
  
  <p>The problem is, in javascript, everytime I click play(), it reloads the audio file and then plays it.  I can't seem to get it to load the audio once in the beginning and go off of whats stored in memory rather than try to reload the audio every single time I click the button.</p>
  
  <p>I've tried experimenting with the preload and autobuffer properties, but it seems that mobile safari ignores those properties, because no matter what I set them too, the behavior is always the same.  I've tried experimenting with source tags and different file formats... nothing.</p>
  
  <p>Any ideas?</p>