IE9 で

IE9 を含む様々なブラウザで <audio> や window.Audio の機能の一部を利用できるようにしてみました。

Silverlight3+ がインストールされている、Firefox3.0, Firefox3.5+, IE8, IE9, Google Chrome3+, Safari4+ で動いてます。
# そのうち、Flash でも動作するようになります(Flash バックエンドは実装中です)
# OperaSilverlight でコケてて、動かないようです

FirefoxOperaogg だけよ

Firefox3.5+ と Opera10.50+ では MP3 を再生できません。Safari4 と Chrome3 は MP3 を再生できます。
MP3 の再生をネイティブでサポートしてないブラウザでは、 new Audio(src) ではなく、 new MP3Audio(src) を使うと MP3 を再生できます。

# MP3Audio は、mp4 や wma も再生できるらしい

仕様的な

HTML5 Audio の仕様の一部を実装しています。

  <audio autoplay loop="true" src="hoge.mp3">
  </audio>

 +--------------+------------+--------------+-------------------+
 |Browser       | new Audio  | new MP3Audio |  HTMLAudioElement |
 +--------------+------------+--------------+-------------------+
 |Firefox3.5+   |  ogg,wav   |     mp3      |    ogg,    wav    |
 |Safari4+      |  mp3,wav   |     mp3      |        mp3,wav    |
 |Chrome3+      |  ogg,mp3   |     mp3      |    ogg,mp3        |
 |Opera10.50+   |  ogg,wav   |     mp3      |    ogg,    wav    |
 |iPhone3       |     -      |      -       |         -         |
 |IE6,IE7,IE8   |    mp3     |     mp3      |         -         |
 |IE9 preview   |    mp3     |     mp3      |         -         |
 +--------------+------------+--------------+-------------------+

  var audio    = new Audio(src = "");
  var mp3audio = new MP3Audio(src = "");

  --- support properties ---
  audio.autoplay = false;         // [READ / WRITE]
  audio.loop = false;             // [READ / WRITE]
  audio.src = "...";              // [READ / WRITE]
  audio.error = false;            // [READ-ONLY]
  audio.ended = false;            // [READ-ONLY]
  audio.paused = true;            // [READ-ONLY]
  audio.volume = 0.5;             // [READ / WRITE]
  audio.startTime = 0;            // [READ / WRITE]
  audio.currentTime = 0;          // [WRITE-ONLY]
  audio.xBackend = "Audio";       // [READ-ONLY]  ※ オレオレ
                   "Silverlight"
                   "Flash"
                   "NoAudio"
  --- support methods ---
  audio.play();
  audio.pause();
  audio.stop();                       ※ オレオレ
  audio.getCurrentTime() -> Number    ※ オレオレ
  --- support events ---
  audio.addEventListener("pause")
  audio.addEventListener("ended")
  audio.addEventListener("error")
  audio.addEventListener("playing")
  audio.addEventListener("canplay")

以下の形式はまだサポートしてません。

  <audio autoplay loop="true">
      <source src="hoge.mp3" type="audio/mpeg" />
  </audio>