Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML5 Audio can't play through Javascript unless triggered manually once

I'm trying to get a small sound file to play automatically using an tag and javascript to initiate it.

<audio id="denied" preload="auto" controls="false">     <source src="sound/denied.wav" />  </audio> 

And then through javascript, at the appropriate time:

$('#denied')[0].play() 

Works fine on Chrome on my desktop. In Android 4.1.1, the sound will not play, unless I hit "play" on the HTML5 audio controls before javascript attempts to play it.

So basically the Android browser (stock or Dolphin) will not play the audio unless the user initiates it at some point before the javascript. Is this intended? Is there any way around this?

like image 942
Jonah H. Avatar asked Aug 30 '12 22:08

Jonah H.


People also ask

How do you trigger audio in JavaScript?

The play() method starts playing the current audio. Tip: This method is often used together with the pause() method. Tip: Use the controls property to display audio controls (like play, pause, seeking, volume, etc, attached on the audio).

What is the correct HTML5 element for playing audio files?

The HTML <audio> element is used to play an audio file on a web page.

Which audio is not supported in HTML5?

The current HTML5 draft specification does not specify which audio formats browsers should support in the audio tag. But most commonly used audio formats are ogg, mp3 and wav. Your browser does not support the element.


1 Answers

Well, for my purposes, here's what I did:

Luckily, before the user can trigger the behavior to start audio, they have to click a button. I set the volume of the element to 0.0, and have it "play" when they click this button.

After the sound is played silently, I simply set the volume property back to 1.0, and it plays without user intervention just fine.

like image 92
Jonah H. Avatar answered Sep 23 '22 17:09

Jonah H.