totoaussi
totoaussi

Reputation: 741

How to check if new Audio is supported by browser?

In safari 5, new Audio is not supported, so the error console displays :

TypeError : 'undefined' is not a constructor (evaluating 'new Audio')

How could I programatically know whether new Audio is supported by browser ?

Upvotes: 6

Views: 2478

Answers (2)

Mikael Dúi Bolinder
Mikael Dúi Bolinder

Reputation: 2285

There are multiple solutions to check if it exists.

Check that the type of Audio isn't "undefined".

if (typeof window.Audio !== "undefined")

Check if window has a property Audio.

if ("Audio" in window)

The below could generate an error.

if (window.Audio)

But, this code doesn't guarantee that it's a good Audio implementation. It could just be some random script doing this: window.Audio = 'http://link.to/some/mp3'.

Upvotes: 2

Tero Tolonen
Tero Tolonen

Reputation: 4254

I guess you might just try it...

var createAudio = function() {
 try {
    return new Audio(); 
 } catch(e) {
    return false;
 }
};
var audio = createAudio();
if(audio) {
  // start playing... or check formats etc.
}

In case there is exception, the Audio class does not exist and returns false.

For more detailed solution check Modernzr library: http://modernizr.com/docs/#audio

The related solution is here Detecting html5 audio support with Modernizr

Upvotes: 3

Related Questions