Blainer
Blainer

Reputation: 2702

stopping html5 audio

How would I write a function that stops ALL instances of playing html5 audio in the DOM?

html5 audio

<audio class="AudioPlayerV1" preload="none" width="292">
    <source src="test.mp3" type="audio/mpeg" />
</audio>

js

AudioPlayerV1('*').each(function() {
    this.setStop();
});

Upvotes: 3

Views: 25600

Answers (3)

Jasper
Jasper

Reputation: 75993

$.each($('audio'), function () {
    this.pause();
});

This just finds all the <audio> elements in the DOM and uses the standard API to pause the playback for each.

Here's some excellent reading about <audio> and <video> tags: https://developer.mozilla.org/en/Using_HTML5_audio_and_video

Update

The documentation for the AudioPlayerV1 script states this is how you pause an <audio> element:

$('#audio_id').AudioPlayerV1('pause');

Source: http://1.s3.envato.com/files/14653378/index.html#how-to-use

It looks like the AudioPlayerV1 plugin is supposed to be called on a selection of DOM element(s) and passed in an option.

Update

To run the plugin to pause multiple <audio> elements you should be able to do this:

$('audio').AudioPlayerV1('pause');

Which selects the <audio> elements in the DOM and passes them to the AudioPlayerV1 plugin. the plugin should be written to handle this but if it isn't then you have to call the plugin on each element. Inside a loop would be easiest:

$.each($('audio'), function () {
    $(this).AudioPlayerV1('pause');
});

Upvotes: 9

Jason Lydon
Jason Lydon

Reputation: 7180

This worked for me. .stop() threw an error.

$.each($('audio'), function () {
    this.pause();
});

Upvotes: 0

zaki
zaki

Reputation: 407

first you have to set an id for your audio element

in your js :

var ply = document.getElementById('player');

var oldSrc = ply.src;// just to remember the old source

ply.src = "";// to stop the player you have to replace the source with nothing

Upvotes: 1

Related Questions