jquery.sound.js
1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
* jQuery sound plugin (no flash)
*
* port of script.aculo.us' sound.js (http://script.aculo.us), based on code by Jules Gravinese (http://www.webveteran.com/)
*
* Copyright (c) 2007 Jörn Zaefferer (http://bassistance.de)
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* $Id$
*/
/**
* API Documentation
*
* // play a sound from the url
* $.sound.play(url)
*
* // play a sound from the url, on a track, stopping any sound already running on that track
* $.sound.play(url, {
* track: "track1"
* });
*
* // increase the timeout to four seconds before removing the sound object from the dom for longer sounds
* $.sound.play(url, {
* timeout: 4000
* });
*
* // disable playing sounds
* $.sound.enabled = false;
*
* // enable playing sounds
* $.sound.enabled = true
*/
(function($) {
$.sound = {
tracks: {},
enabled: true,
template: function(src) {
return '<embed style="height:0" loop="false" src="' + src + '" autostart="true" hidden="true"/>';
},
play: function(url, options){
if (!this.enabled)
return;
var settings = $.extend({
url: url,
timeout: 2000
}, options);
if (settings.track) {
if (this.tracks[settings.track]) {
var current = this.tracks[settings.track];
current.Stop && current.Stop();
current.remove();
}
}
var element = $.browser.msie
? $('<bgsound/>').attr({
src: settings.url,
loop: 1,
autostart: true
})
: $(this.template(settings.url));
element.appendTo("body");
if (settings.track) {
this.tracks[settings.track] = element;
}
setTimeout(function() {
element.remove();
}, 2000)
}
};
})(jQuery);