为交互添加恰当的音效,常常能改善用户体验。在我们所熟悉的windows里,清空回收站的碎纸声就是很好的例子。
下面是一个利用HTML5, Jquery,给页面添加音效的小组件(只是添加音效,并不是播放器)。
其实很简单,就是利用HTML5中的audio标签,播放声音。不过为了照顾IE 6-8,还是用上了bgsound。
兼容所有主流浏览器(非主流不在考虑之列了)
闲话少说,上代码:
<a href=http://www.shancun.net/skin/default/image/nopic.gif#http://www.shancun.net/skin/default/image/nopic.gif class=http://www.shancun.net/skin/default/image/nopic.giffui-btnhttp://www.shancun.net/skin/default/image/nopic.gif>播放</a>
<script>
if (!FUI){
var FUI = {};
}
FUI.soundComponent=function(profile){
this.profile={
src:'', //音频文件地址
altSrc:'', //备选音频文件地址 (不同浏览器支持的音频格式不同,可见附表)
loop:false //是否循环播放,这个参数现在没有用上
};
if(profile) {
$.extend(this.profile,profile);
}
this.soundObj=null;
this.isIE = !-[1,];
this.init();
};
FUI.soundComponent.prototype={
init:function(){
this._setSrc();
},
_setSrc:function(){
if(this.soundObj){
if(this.isIE){
this.soundObj[0].src=this.profile.src;
}else{
this.soundObj[0].innerHTML='<source src=http://www.shancun.net/skin/default/image/nopic.gif'+this.profile.src+'http://www.shancun.net/skin/default/image/nopic.gif /><source src=http://www.shancun.net/skin/default/image/nopic.gif'+this.profile.altSrc+'http://www.shancun.net/skin/default/image/nopic.gif />';
}
}else{
if(this.isIE){
this.soundObj=$('<bgsound volume=http://www.shancun.net/skin/default/image/nopic.gif-10000http://www.shancun.net/skin/default/image/nopic.gif loop=http://www.shancun.net/skin/default/image/nopic.gif1http://www.shancun.net/skin/default/image/nopic.gif src=http://www.shancun.net/skin/default/image/nopic.gif'+this.profile.src+'http://www.shancun.net/skin/default/image/nopic.gif>').appendTo('body'); //-10000是音量的最小值。先把音量关到最小,免得一加载就叮的一声,吓到人。
}else{
this.soundObj=$('<audio preload=http://www.shancun.net/skin/default/image/nopic.gifautohttp://www.shancun.net/skin/default/image/nopic.gif autobuffer><source src=http://www.shancun.net/skin/default/image/nopic.gif'+this.profile.src+'http://www.shancun.net/skin/default/image/nopic.gif /><source src=http://www.shancun.net/skin/default/image/nopic.gif'+this.profile.altSrc+'http://www.shancun.net/skin/default/image/nopic.gif /></audio>').appendTo('body');
}
}
},
setSrc:function(src,altSrc){
this.profile.src=src;
if(typeof altSrc!='undefined'){
this.profile.altSrc=altSrc;
}
this._setSrc();
},
play:function(){
if(this.soundObj){
if(this.isIE){
this.soundObj[0].volume = 1; //把音量打开。
this.soundObj[0].src = this.profile.src;
}else{
this.soundObj[0].play();
}
}
}
};
var sd=new FUI.soundComponent({src:'ding.wav',altSrc:'ding.mp3'});
$('.fui-btn').bind('click',function(e){
sd.play();
});
</script>
附表
Format
IE9
Firefox3.5
Opera10.5
Chrome3.0
Safari3.0
OggVorbis
No
Yes
Yes
Yes
No
MP3
Yes
No
No
Yes
Yes
Wav
No
Yes
Yes
Yes
Yes